Possible Duplicate:
Floating point issue in C




#include<stdio.h>
main()
{
        int a,b;
        float f;
        scanf("%2d%3d%4f",&a,&b,&f);
        printf("%d %d %f",a,b,f);
}


当我运行该程序并输入2 4 56.8时,它给出的输出为2 4 56.799999 .....但是我希望2 4 56.8 ....为什么会这样?

最佳答案

那是对的。浮点数是近似值。正如0.33333333是1/3的近似值一样,56.7999999是56.8的近似值。 0.1没有精确的浮点表示形式。

查看一些已写的内容:


http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
http://www.hack3r.com/forum-topic/what-every-programmer-should-know-about-floating-point-arithmetic

关于c - 浮点打印不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10991505/

10-13 07:43