3

doubleJava でリテラルを定義するとき、有効桁数を何桁使用する必要がありますか? これは、double が保持できるよりも有効な数字で数値を表現しようとしていると仮定しています。

I see 20Math.javaと 21:

public static final double E = 2.7182818284590452354;
public static final double PI = 3.14159265358979323846;

これは、IEEE 754 が提供する 15 ~ 17 桁の有効数字よりも多い数字です。一般的な経験則は何ですか?

4

2 に答える 2

4

double の精度は15 ~ 17 桁です。

これらの定数が小数点以下 20 桁で表示される理由はわかりませんが、これらの桁が削除されていることがわかります。

2.7182818284590452354d == 2.718281828459045d

于 2013-11-04T15:50:25.787 に答える
1

Math.E および Math.PI の javadoc を読むと、次のように表示されます (強調は私のものです)。

他のどの値よりも近いdouble 値[...]

リテラルを double として正確に表現できる場合は、それを行います。それ以外の場合は、表現可能な最も近い値を見つけます。

もちろん、値の使用方法によっては、有効数字が 10 桁までしか正確でないかどうかは問題にならない場合があります。

于 2013-11-04T15:51:14.507 に答える