【发布时间】:2013-08-12 12:42:45
【问题描述】:
我是 java 新手,但有一些编码经验(主要是 PHP 和一些 C++)。
我在程序中的计算遇到了一些问题。当我运行以下代码时:
public class Test {
public static void main(String[] args) {
double number = 2 - (0.10 + 1.05);
System.out.println( number );
if( number < 0.85 ) System.out.println("to small");
}
}
我的输出如下:
run:
0.8499999999999999
to small
BUILD SUCCESSFUL (total time: 0 seconds)
我期望 2 - ( 0.10 + 1.05 ) 等于 0.85 但由于某种原因它不是。有谁知道它为什么会这样?
如果这很重要,我正在使用 netbeans 在 Windows 8 上编写版本 7.3.1 和 jdk7u25。如果还有什么我应该补充的,请告诉。
/克里斯
【问题讨论】:
-
这与
(1/3) + (1/3) + (1/3)无法以固定的十进制精度准确地为您提供1.0的原因相同。有些数字无法准确表示。