binary32 和 binary64 的有效十进制数字

significant decimal digits of binary32 and binary64

根据 Wikipediabinary32 格式具有 6 到 9 位有效小数位精度64 格式15 到 17.

我发现这些有效的小数位是使用尾数计算的,但我不明白如何计算它?任何的想法 ?

32位格式的尾数=24位 ,64位格式的尾数= 53位

首先,对于这个问题,最好使用 24 和 53 的总有效数字大小。未表示前导位的事实只是编码的一个方面。

如果您只对一个模糊的解释感兴趣,那么每个十进制数字正好包含 log2(10)(约 3.32)位信息。当你要编码一个数字时,你需要4位,但这里我们说的是高效地编码几个连续的十进制数字,所以3.32的数字就可以了。

53 位/log2(10) -> 15.95(16 位十进制数字)

24 位/log2(10) -> 7.22(7 位十进制数字)

如果你想正确地做到这一点,你需要考虑这样一个事实,即不同的数字可以用二进制和十进制表示。询问二进制浮点数的十进制精度的人通常被认为是指可以往返二进制格式并返回相同的十进制精度,或者往返二进制浮点数所需的十进制精度从小数到相同的值,因为这些是最有意义的解释。因此范围为“6 … 9”和“15 … 17”。 6 是保证通过 binary32 往返的十进制位数,9 是通过十进制往返 binary32 数字需要保留的十进制位数,依此类推。

博客的作者Exploring Binary is currently writing a series on round-trips。如果您对 log2(10)=3.32 的解释不满意,接下来应该阅读本系列。