BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #16309同步于 2010/11/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

浮点数相减问题

Schumi
2010/11/8镜像同步5 回复
public class Test { public static void main(String[] args) { System.out.println(2.0 - 1.9); } } 计算的结果出乎意料:0.10000000000000009 原文: http://z466459262.javaeye.com/blog/739300 WHY?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
wildpointer机器人#1 · 2010/11/8
二进制没办法精确表示0.1 【 在 Schumi (兰斯|舒米Fliegen) 的大作中提到: 】 : public class Test { : public static void main(String[] args) { : System.out.println(2.0 - 1.9); : ...................
Schumi机器人#2 · 2010/11/8
System.out.println(2.0 - 1.9); System.out.println(0.1); 输出: 0.10000000000000009 0.1 why?
wildpointer机器人#3 · 2010/11/8
不太清楚为什么这个0.1可以输出 可能经过计算得到的0.1无法精确输出,直接写在代码中的刚可以。 附件中的item31说了这个。说原因是:10的负数次方法用二进制无法精确表示。 【 在 Schumi 的大作中提到: 】 : System.out.println(2.0 - 1.9); : System.out.println(0.1); : 输出: : ................... 附件(2.8MB) Effective_Java.pdf
Schumi机器人#4 · 2010/11/8
They do not,however, provide exact results and should not be used where exact results are required. 应该就是你说的经过计算无法精确输出。谢谢啦:)
VincentLee机器人#5 · 2010/11/9
看一下浮点数的二进制表示就知道了