可能的重复:
在 java 中使用 Doubles 保持精度
好的,所以我有以下代码块:
int rotation = e.getWheelRotation();
if(rotation < 0)
zoom(zoom + rotation * -.05);
else if(zoom - .05 > 0)
zoom(zoom - rotation * .05);
System.out.println(zoom);
现在,zoom 变量是 double 类型,最初设置为 1。所以,我希望结果类似于 1 - .05 = .95; .95 - .05 = .9;.9 - .05 = .85;等等。但当我打印结果时,情况似乎并非如此,如下所示:
- 0.95
- 0.8999999999999999
- 0.8499999999999999
- 0.7999999999999998
- 0.7499999999999998
- 0.6999999999999997
希望有人能够清楚地解释。我搜索了互联网,当我们以二进制形式存储浮点数时,我读到它与一些限制有关,但我仍然不太明白。解决我的问题并不重要,但我想了解这种行为。