浮点数在C中四舍五入

时间:2016-04-15 00:31:44

标签: c floating-point rounding

我开始学习c。今天,当我正在制作一个节目时,我发现了一个有趣的事情,我又做了一个小程序(类似于我的问题)来检查它。

#include<stdio.h>
int main(void)
{
    float num1=867.0;
    float num2=.6921;
    printf("sum = %.4f \n",num1+num2);
    return 0;
}

如果我运行上述程序,我会得到867.6921作为答案。但如果我将.4%f更改为%f,则答案将更改为 sum = 867.692078 。为什么输出的变化?另外,有没有办法可以在不使用.4%f的情况下得到答案?

2 个答案:

答案 0 :(得分:2)

  

但如果我将.4%f更改为%f,则答案将更改为sum = 867.692078

printf将结果舍入到您指定的浮点后的那么多位数,默认值为.6。在舍入时,它使用当前floating point rounding mode,默认值是舍入到最近的。

答案 1 :(得分:0)

float类型具有大约七位精度(可以是6-9位数)。另一种方法是使用g代替f。这会修复数字中精确数字的位数,而不仅仅是小数点后的数字。

  printf("sum = %.7g \n",num1+num2);

这会产生输出

  

sum = 867.6921

并且始终为任何输入提供七位精度。数字格式如下:

  

0.000000E + 07
  0000000
  000000.0
  00000.00
  0000.000
  000.0000

...等