搜索
查看: 2384|回复: 9
打印 上一主题 下一主题

5.2+3.1算出来怎么是8.299999为什么

[复制链接]
跳转到指定楼层
楼主
发表于 2013-7-12 15:01:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
6啊哈币
5.2+3.1算出来怎么是8.299999    我试了好几次 为什么

最佳答案

查看完整内容

因为二进制无法精确表达8.3这个十进制数字 你可以试一试,小数点后第一位表示1/2,第二位表示1/2/2,第三位表示1/2/2/2,这样子计数能不能精确表达8.3
沙发
发表于 2013-7-12 15:01:20 | 只看该作者
因为二进制无法精确表达8.3这个十进制数字
你可以试一试,小数点后第一位表示1/2,第二位表示1/2/2,第三位表示1/2/2/2,这样子计数能不能精确表达8.3
板凳
发表于 2013-7-12 18:07:02 | 只看该作者
#include <stdio.h>
#include <stdlib.h>
int main()
{float a,b,c;
    a=5.2;
    b=3.1;
    c=a+b;
    printf("%.1f",c);     //保留一位小数
       
    system("pause");
    return 0;
}
地板
发表于 2013-7-12 18:07:56 | 只看该作者
或者把fioat改成double
5#
发表于 2013-7-12 18:08:33 | 只看该作者
哦打错的,应是float
6#
发表于 2013-7-12 19:00:50 | 只看该作者
Dsp 发表于 2013-7-12 18:07
#include
#include
int main()

其实这些做法都是rounding掉了
7#
发表于 2013-7-13 14:50:25 | 只看该作者
float会四舍五入的显示小数点以后6位    在printf里限制一下。
8#
发表于 2013-7-13 18:20:28 | 只看该作者
为什么有时候不弹出运行结果那个窗口啊? 尽管有system("pause");
9#
发表于 2013-7-18 12:40:38 | 只看该作者
浮点小数不精确{:soso__1555055664780030747_4:}
10#
发表于 2013-12-11 21:22:33 | 只看该作者
rosynirvana 发表于 2013-7-12 15:01
因为二进制无法精确表达8.3这个十进制数字
你可以试一试,小数点后第一位表示1/2,第二位表示1/2/2,第三位 ...

遇到了同样的问题,谢谢解答
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表