Wikipedia binary32 格式的 6到9 精确十进制数字精度和 64格式从 15到17。
我发现这些有效的十进制数字是使用尾数计算的,但我没有得到它如何计算它?任何的想法 ?
32位格式的尾数= 24位 ,64位格式的尾数= 53位
答案 0 :(得分:6)
首先,对于这个问题,最好使用总有效数字大小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是需要保留的十进制数字的数字,以通过十进制对二进制32号进行往返运算,依此类推。
博客Exploring Binary的作者目前是writing a series on round-trips。如果您对log2(10)= 3.32解释不满意,那么本系列就是您应该阅读的内容。