根据Wikipedia,binary32格式具有6 到 9位有效十进制数字精度,64 格式具有15 到 17 位。
我发现这些有效的十进制数字是使用尾数计算的,但我不明白如何计算它?任何的想法 ?
32bit格式的尾数=24bits,64bit格式的尾数=53bits
根据Wikipedia,binary32格式具有6 到 9位有效十进制数字精度,64 格式具有15 到 17 位。
我发现这些有效的十进制数字是使用尾数计算的,但我不明白如何计算它?任何的想法 ?
32bit格式的尾数=24bits,64bit格式的尾数=53bits
首先,对于这个问题,最好使用总有效数大小 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博客的作者目前正在撰写关于往返的系列文章。如果您对 log2(10)=3.32 的解释不满意,本系列是您接下来应该阅读的内容。