double和float的加法产生误差是怎么回事?

creazywind 2008-01-09 02:49:38
double d=35.2+3.2;
float fl=35.2f+3.2f;
System.out.println(d);
System.out.println(fl);
这段代码为什么结果是
38.400000000000006
38.4
...全文
231 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
creazywind 2008-01-15
  • 打赏
  • 举报
回复
哦 我知道了。那为什么float型得可以正确计算它的小数位是怎么存储的?它和double的表示有什么区别呢?
haoyangguang 2008-01-10
  • 打赏
  • 举报
回复
系统误差,在所难免!
  • 打赏
  • 举报
回复
这是由于在计算机内部并不能精确地表示0.4而产生的误差,这是IEEE754浮点数规范规定的。

如果在精度要求很高的领域,比如:金融、科学计算等方面,不应该使用浮点数来进行计算,在
Java中要精确地进行小数运算的话可以采用BigDecimal类。
changjiangzhibin 2008-01-09
  • 打赏
  • 举报
回复
精度不同

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧