- C 标准库
- C 库 - 首页
- C 库 - <assert.h>
- C 库 - <complex.h>
- C 库 - <ctype.h>
- C 库 - <errno.h>
- C 库 - <fenv.h>
- C 库 - <float.h>
- C 库 - <inttypes.h>
- C 库 - <iso646.h>
- C 库 - <limits.h>
- C 库 - <locale.h>
- C 库 - <math.h>
- C 库 - <setjmp.h>
- C 库 - <signal.h>
- C 库 - <stdalign.h>
- C 库 - <stdarg.h>
- C 库 - <stdbool.h>
- C 库 - <stddef.h>
- C 库 - <stdio.h>
- C 库 - <stdlib.h>
- C 库 - <string.h>
- C 库 - <tgmath.h>
- C 库 - <time.h>
- C 库 - <wctype.h>
- C 标准库资源
- C 库 - 快速指南
- C 库 - 有用资源
- C 库 - 讨论
C 库 - fesetround() 函数
C 的fenv 库 fesetround() 函数设置算术运算(浮点数)的舍入模式。在将此函数应用于实际应用时,需要根据浮点数进行特定计算,例如银行/金融软件始终将值舍入为零(利息计算)。
语法
以下是 fesetround() 函数的 C 库语法。
int fesetround(int round);
参数
此函数仅接受一个参数,该参数为整数。以下是确定所需值(舍入)的参数列表:
FE_TONEAREST:此参数定义舍入到最接近的,即零。
FE_DOWNWARD:此参数定义将值舍入到负无穷大。
FE_UPWARD:此参数定义将值舍入到正无穷大。
FE_TOWARDZERO:此参数定义将值舍入到零。
返回值
如果成功,此函数返回一个整数值(零)。如果参数不是受支持的舍入模式,则返回非零值。
示例 1
以下是一个基本的 C 库程序,将参数 FE_TONEAREST 设置为 fesetround() 函数以查看其演示。
#include <stdio.h> #include <fenv.h> #include <math.h> int main() { double value = 9.5; double results[4]; // Set rounding modes and perform calculations fesetround(FE_TONEAREST); results[0] = nearbyint(value); fesetround(FE_DOWNWARD); results[1] = nearbyint(value); fesetround(FE_UPWARD); results[2] = nearbyint(value); fesetround(FE_TOWARDZERO); results[3] = nearbyint(value); // Print results printf("Rounding FE_TONEAREST: %f\n", results[0]); printf("Rounding FE_DOWNWARD: %f\n", results[1]); printf("Rounding FE_UPWARD: %f\n", results[2]); printf("Rounding FE_TOWARDZERO: %f\n", results[3]); return 0; }
输出
以上代码产生以下结果:
Rounding mode set to FE_TONEAREST successfully.
示例 2
下面的程序演示了每个参数,这些参数将舍入模式的值与单个计算进行比较。
#include <stdio.h> #include <fenv.h> #include <math.h> int main() { double value = 9.5; double results[4]; // Set rounding modes and perform calculations fesetround(FE_TONEAREST); results[0] = nearbyint(value); fesetround(FE_DOWNWARD); results[1] = nearbyint(value); fesetround(FE_UPWARD); results[2] = nearbyint(value); fesetround(FE_TOWARDZERO); results[3] = nearbyint(value); // Print results printf("Rounding FE_TONEAREST: %f\n", results[0]); printf("Rounding FE_DOWNWARD: %f\n", results[1]); printf("Rounding FE_UPWARD: %f\n", results[2]); printf("Rounding FE_TOWARDZERO: %f\n", results[3]); return 0; }
输出
执行上述代码后,我们将获得以下结果:
Rounding FE_TONEAREST: 10.000000 Rounding FE_DOWNWARD: 9.000000 Rounding FE_UPWARD: 10.000000 Rounding FE_TOWARDZERO: 9.000000
示例 3
在此程序中,我们设置舍入模式(浮点数)以执行除法任务。
#include <stdio.h> #include <fenv.h> int main() { // Set rounding mode to upward fesetround(FE_UPWARD); // Perform a division double result = 10.0 / 3.0; printf("Result with FE_UPWARD: %f\n", result); return 0; }
输出
执行上述代码后,我们将获得以下结果:
Result with FE_UPWARD: 3.333334
c_library_fenv_h.htm
广告