为什么java7为double的总和提供错误输出

时间:2013-07-29 21:41:59

标签: java double java-7

我尝试了以下程序

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

2 个答案:

答案 0 :(得分:1)

浮点数(包括Java的double类型)并不完全准确。有关详细信息,请参阅how they encode information。您可以看到并非所有数字都具有精确的IEEE 754 64位表示

答案 1 :(得分:0)

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