3

定义 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 位有效数字多。那么一般的经验法则是什么?

4

2 回答 2

4

double 具有15-17 位十进制数字精度。

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

2.7182818284590452354d == 2.718281828459045d

于 2013-11-04T15:50:25.787 回答
1

如果您阅读 Math.E 和 Math.PI 的 javadocs,您会看到这一点(强调我的):

比任何其他[...]更接近的双精度值

如果您的文字可以完全表示为双精度,那么就这样做。否则,找到可表示的最接近的值。

当然,根据您的值的使用方式,您是否“仅”准确到例如 10 个有效数字可能并不重要。

于 2013-11-04T15:51:14.507 回答