啊哈磊_编程从这里起步

标题: 小数问题 [打印本页]

作者: x嘘x别慌    时间: 2013-3-21 16:53
标题: 小数问题
5.2+3.1为什么等于8.299999????
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
        float a,b,c;
    a=5.2;
    b=3.1;
    c=a+b;

    printf("%f",c);


        Sleep (8000);
        return 0;

有错误吗?新手求助。。

作者: Smallbee    时间: 2013-3-21 16:53
程序没有任何问题,问题出在二进制身上。计算机中是以二进制来存储数据的,十进制的浮点数转换为二进制后存在精度问题,所以输出结果就不正确了。
若将printf改成这样
printf("%.9f",c);
你会发现输出结果变成了8.299999237
这里可以用以下语句来得到“正确”结果:
printf("%.1f",c);
以上的.9,.1是用来指定输出的小数位数。
作者: x嘘x别慌    时间: 2013-3-21 16:57
OK  搞定了 知道什么问题了
作者: chipplei    时间: 2013-3-21 17:57
最后还少个

}
作者: x嘘x别慌    时间: 2013-3-22 08:46
Smallbee 发表于 2013-3-21 17:06
程序没有任何问题,问题出在二进制身上。计算机中是以二进制来存储数据的,十进制的浮点数转换为二进制后存 ...

恩呢 非常感谢 还在学习中 很有意思 希望多多帮助!
作者: x嘘x别慌    时间: 2013-3-22 08:47
chipplei 发表于 2013-3-21 17:57
最后还少个

}

恩 那个由于粗心没有复制上  问题已经解决 谢谢
作者: Smallbee    时间: 2013-3-22 15:18
x嘘x别慌 发表于 2013-3-22 08:46
恩呢 非常感谢 还在学习中 很有意思 希望多多帮助!

我也只是学了个皮毛。互相学习,共同进步吧
作者: l万lin    时间: 2013-3-22 17:02
格式控制输入输出,可以自己设置小数点位数(一定范围内),具体回复也有




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2