C 库 - fegetround() 函数



C 的fenvfegetround() 函数是浮点环境的一部分,可用于访问当前的舍入模式。此模式表示以四舍五入形式表示的浮点数。此函数的用法应用于图形、数值分析和财务计算等各个领域。

语法

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

int fegetround(void);

参数

此函数不接受任何参数。

返回值

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

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

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

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

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

示例 1

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

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

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

输出

以上代码产生以下结果:

Current rounding mode: 0

示例 2

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

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

int main() {

   // Check current rounding mode
   
   int round_mode = fegetround();
   printf("Current rounding mode: %d\n", round_mode);
   
   // Set rounding mode to downward
   
   fesetround(FE_DOWNWARD);
   round_mode = fegetround();
   printf("Rounding mode after setting to FE_DOWNWARD: %d\n", 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() {
   // Set rounding mode to nearest
   fesetround(FE_TONEAREST);
   
   // Perform a calculation
   double result = rint(3.5);
   printf("Result with FE_TONEAREST: %f\n", result);
   
   // Change rounding mode to toward zero
   fesetround(FE_TOWARDZERO);
   
   // Perform the same calculation
   result = rint(3.5);
   printf("Result with FE_TOWARDZERO: %f\n", result);
   
   return 0;
}

输出

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

Result with FE_TONEAREST: 4.000000
Result with FE_TOWARDZERO: 3.000000
c_library_fenv_h.htm
广告