0

我尝试了以下程序

class test{
public static void main (String argv[]){
    double x = 0.1;
    double y = 0;
    for (int i =0;i<10 ; i++){
        y=y+x;
        System.out.println (y);
    }
}
}

但它给出了以下输出

0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999

为什么 java7 给出这个而不是 0.3 或 0.8 ...!

我也在在线 java 编译器中尝试了以下内容 http://ideone.com/g0bYad

4

2 回答 2

1

浮点数(包括 Java 的double类型)并不完全精确。有关更多详细信息,请参阅它们如何编码信息。您可以看到并非所有数字都具有精确的 IEEE 754 64 位表示

于 2013-07-29T21:44:04.413 回答
0

浮点值缺乏精确的精度。这就是他们的本性。尝试使用 BigDecimal 类。

于 2013-07-29T21:47:11.617 回答