在Java中我应该使用多少有效数字用于双重文字?

时间:2013-11-04 15:41:02

标签: java literals significant-digits

在Java中定义double字面值时,我应该使用多少个有效数字?这假设我试图表示一个数字比一个双重数字更重要的数字。

Math.java我看到20和21:

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

这超过了IEEE 754提供的15-17位有效数字。那么一般的经验法则是什么?

2 个答案:

答案 0 :(得分:4)

双精度具有15-17 decimal digits精度。

我无法回答为什么这些常量会出现20位小数,但您会发现这些数字被删除了:

2.7182818284590452354d == 2.718281828459045d

答案 1 :(得分:1)

如果你阅读了Math.E和Math.PI的javadocs,你会看到这个(强调我的):

  

比其他任何 [...]

更接近的双重值

如果您的文字可以准确地表示为double,那么就这样做。否则,找到可表示的最接近的值。

当然,根据您的价值观的使用方式,如果您对“10位重要数字”仅“准确”,则可能无关紧要。