This question already has answers here:
Why are floating point numbers inaccurate?
                                
                                    (6个答案)
                                
                        
                                3年前关闭。
            
                    
我开始学习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来获得答案吗?

最佳答案

float类型的精度大约为七位数(可以是6-9位数之间的任何值)。一种替代方法是使用g代替f。这将固定数字中的精确位数,而不仅仅是小数点后的位数。

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


这产生输出


  总和= 867.6921


并且任何输入都将始终提供7位数的精度。数字格式如下:


  0.000000E + 07
  0000000
  000000.0
  00000.00
  0000.000
  000.0000


...等等

关于c - 浮点数在C中四舍五入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36636352/

10-12 20:19