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 に答える