在Java中定义double
字面值时,我应该使用多少个有效数字?这假设我试图表示一个数字比一个双重数字更重要的数字。
在Math.java
我看到20和21:
public static final double E = 2.7182818284590452354;
public static final double PI = 3.14159265358979323846;
这超过了IEEE 754提供的15-17位有效数字。那么一般的经验法则是什么?
答案 0 :(得分:4)
双精度具有15-17 decimal digits精度。
我无法回答为什么这些常量会出现20位小数,但您会发现这些数字被删除了:
2.7182818284590452354d == 2.718281828459045d
答案 1 :(得分:1)
如果你阅读了Math.E和Math.PI的javadocs,你会看到这个(强调我的):
比其他任何 [...]
更接近的双重值
如果您的文字可以准确地表示为double,那么就这样做。否则,找到可表示的最接近的值。
当然,根据您的价值观的使用方式,如果您对“10位重要数字”仅“准确”,则可能无关紧要。