我试图确定 double 的最大精度是多少。在此链接的可接受答案的注释中,Retain precision with double in Java @PeterLawrey指出最大精度为15。
您如何确定呢?
最佳答案
实际上,这根本不是他所说的。他说的是:
他错了。它们的精度为15个十进制数字。
任意数字中的小数位数由其对数10的对数给出。15是log10(253-1)的下限值,其中53是尾数的位数(包括隐含的位),如因此,Javadoc和IEEE 754以及253-1是最大可能的尾数值。实际值是15.954589770191003298111788092734,为Windows计算器的限制。
他将其描述为“精确度的小数位”是完全错误的。如果double
都在小数点之前,则它们的精度为15个小数位。对于带小数部分的数字,由于十进制和二进制小数的不可通约性,您可以用十进制表示形式获得超过15位的数字。