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

rintd32函数


概要:
#include <math.h>
#ifdef __STDC_IEC_60559_DFP__
    _Decimal32 rintd32(_Decimal32 x);
#endif 

描述:

该函数根据当前舍入模式,将参数x舍入为浮点格式的整数值。

rintd32函数和nearbyintd32函数区别在于:如果结果和参数x的值不同,rintd32函数可能会引发FE_INEXACT浮点异常。


参数:
_Decimal32 x

参数为_Decimal32类型的浮点数。


返回值:

函数返回浮点格式表示的舍入得到的整数值。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
/*函数rintd32范例*/

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

#pragma STDC FENV_ACCESS ON

int main(void)
{
  #ifdef __STDC_IEC_60559_DFP__
    _Decimal32 x = 2.3df, y = 2.7df;

    #pragma STDC FENV_DEC_ROUND FE_DEC_TONEAREST
    puts("Current rounding direction: FE_DEC_TONEAREST");
    printf("rintd32(%.2Hf) = %.2Hf\n", x, rintd32(x));
    printf("rintd32(%.2Hf) = %.2Hf\n", y, rintd32(y));

    printf("\n");

    #pragma STDC FENV_DEC_ROUND FE_DEC_UPWARD
    puts("Current rounding direction: FE_DEC_UPWARD");
    printf("rintd32(%.2Hf) = %.2Hf\n", x, rintd32(x));
    printf("rintd32(%.2Hf) = %.2Hf\n", y, rintd32(y));

  #else
    puts("The implementation does not support decimal floating types.");
  #endif

  return 0;
}


可能输出:

Current rounding direction: FE_DEC_TONEAREST

rintd32(2.30) = 2.00

rintd32(2.70) = 3.00

Current rounding direction: FE_DEC_UPWARD

rintd32(2.30) = 3.00

rintd32(2.70) = 3.00

(注:编译时实现还未支持十进制浮点类型。)


相关内容:
rint double类型的根据当前舍入模式舍入为整数值的函数。
rintl long double类型的根据当前舍入模式舍入为整数值的函数。
rintf float类型的根据当前舍入模式舍入为整数值的函数。
rintd64 _Decimal64类型的根据当前舍入模式舍入为整数值的函数。
rintd128 _Decimal128类型的根据当前舍入模式舍入为整数值的函数。


主要参考资料:

1、ISO/IEC 9899:2024