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