当前位置: C语言 -- 标准库 -- <math.h> -- FP_INT_UPWARD

FP_INT_UPWARD宏


概要:
#include <math.h>
#define FP_INT_UPWARD value //value值由具体实现定义。

描述:

该宏是数学舍入方向宏(math rounding direction macro),表示ceil函数的舍入方向,数值转换成浮点格式的整数值时向上舍入,即向+∞舍入。该宏会扩展为整型常量表达式,可用作fromfp、ufromfp、fromfpx、ufromfpx函数的第二个参数。

ISO/IEC 9899:2024标准定义了以下5个数学舍入方向宏:

宏 舍入方向 对应函数
FP_INT_UPWARD 向上舍入。 表示ceil函数的舍入方向。
FP_INT_DOWNWARD 向下舍入。 表示floor函数的舍入方向。
FP_INT_TOWARDZERO 向0舍入。 表示trunc函数的舍入方向。
FP_INT_TONEARESTFROMZERO 向远离0的方向就近舍入。 表示round函数的舍入方向。
FP_INT_TONEAREST 向偶数方向就近舍入。 表示roundeven函数的舍入方向。

以上数学舍入方向宏表示不同的舍入方向,会扩展为不同值的整型常量表达式。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
/*宏FP_INT_UPWARD范例*/

#include <math.h>
#include <stdio.h>

int main(void)
{
    printf("fromfp(2.55, FP_INT_UPWARD, 32) = %f\n", fromfp(2.55, FP_INT_UPWARD, 32));
    printf("fromfp(2.35, FP_INT_UPWARD, 32) = %f\n", fromfp(2.35, FP_INT_UPWARD, 32));
    printf("fromfp(-2.55, FP_INT_UPWARD, 32) = %f\n", fromfp(-2.55, FP_INT_UPWARD, 32));
    printf("fromfp(-2.35, FP_INT_UPWARD, 32) = %f\n", fromfp(-2.35, FP_INT_UPWARD, 32));
    
    return 0;
}

可能输出:

fromfp(2.55, FP_INT_UPWARD, 32) = 3.000000

fromfp(2.35, FP_INT_UPWARD, 32) = 3.000000

fromfp(-2.55, FP_INT_UPWARD, 32) = -2.000000

fromfp(-2.35, FP_INT_UPWARD, 32) = -2.000000

(注:编译时实现还未支持宏FP_INT_UPWARD和函数fromfp。)


相关内容:
FP_INT_DOWNWARD 表示向下舍入的数学舍入方向宏。
FP_INT_TOWARDZERO 表示向0舍入的数学舍入方向宏。
FP_INT_TONEARESTFROMZERO 表示向远离0的方向就近舍入的数学舍入方向宏。
FP_INT_TONEAREST 表示向偶数方向就近舍入的数学舍入方向宏。


主要参考资料:

1、ISO/IEC 9899:2024

2、sourceware.org : Rounding Functions