C 库 - fegetround() 函数

❮ C 标准库 - <fenv.h>


C fenv 库中的 fegetround() 函数是浮点环境的一部分,可用于访问当前的舍入模式。此模式以舍入形式表示浮点数。该函数广泛应用于图形、数值分析和金融计算等各个领域。

语法

以下是 fegetround() 函数的 C 库语法。

int fegetround(void);

参数

此函数不接受任何参数。

返回值

此函数返回代表以下舍入模式之一的整数值 -

  • FE_TONEAREST:此参数定义舍入到最接近的数,也就是零。

  • FE_DOWNWARD:此参数定义向负无穷大舍入。

  • FE_UPWARD:此参数定义向正无穷大舍入。

  • FE_TOWARDZERO:此参数定义舍入值为零。

示例 1

以下是显示以下示例的基本 C 库程序: fegetround() 函数的用法。

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

int main() {
   int round_mode = fegetround();
   printf("Current rounding mode: %d", round_mode);
   return 0;
}

输出

上述代码产生以下结果 -

Current rounding mode: 0

示例 2

下面的程序首先检查当前的舍入模式并打印其值。然后,我们使用 fesetround 设置参数 FE_DOWNWARD,该函数确定值向负无穷方向舍入并显示结果。

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

int main() {

   // 检查当前舍入模式
   
   int round_mode = fegetround();
   printf("Current rounding mode: %d", round_mode);
   
   // 将舍入模式设置为向下
   
   fesetround(FE_DOWNWARD);
   round_mode = fegetround();
   printf("Rounding mode after setting to FE_DOWNWARD: %d", round_mode);
   
   return 0;
}

输出

执行上述代码后,我们得到以下结果 -

Current rounding mode: 0
Rounding mode after setting to FE_DOWNWARD: 1024

示例 3

fegetround() 函数接受参数 FE_TONEAREST,并使用 rint 函数执行舍入计算,该函数对接受的整数值进行舍入。最终,输出显示了不同的舍入模式如何影响 rint 函数的结果。

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

int main() {
    // 将舍入模式设置为最接近
    fesetround(FE_TONEAREST);
    
    // 执行计算
    double result = rint(3.5);
    printf("FE_TONEAREST 的结果: %f", result);
    
    // 将舍入模式更改为向零舍入
    fesetround(FE_TOWARDZERO);
    
    // 执行相同的计算
    result = rint(3.5);
    printf("FE_TOWARDZERO 的结果: %f", result);
    
    return 0;
}

输出

执行上述代码后,我们得到以下结果 -

FE_TONEAREST 的结果: 4.000000
FE_TOWARDZERO 的结果: 3.000000

❮ C 标准库 - <fenv.h>