根据维基百科binary32格式有6到9有效十进制数字精度和64格式有15到17。
我发现这些有效的十进制数字已经计算使用尾数,但我没有得到它如何计算它?有什么想法吗?
尾数32位格式= 24位,尾数64bit格式= 53bits
首先,对于这个问题,最好使用总有效位数为24和53。前导位不被表示只是编码的一个方面。
如果你只对一个模糊的解释感兴趣,每个十进制数字恰好包含log2(10)(约3.32)位信息。当你必须编码一个数字时,你需要4位,但这里我们谈论的是有效地编码几个连续的十进制数字,所以数字3.32就可以了。
53位/log2(10) -> 15.95(16位十进制数字)
24bits/log2(10) -> 7.22(7位十进制数字)
如果你想正确地做到这一点,你需要考虑这样一个事实,即二进制和十进制不能表示相同的数字。问二进制浮点数的十进制精度的人通常被认为是指可以通过二进制格式往返并返回相同的十进制精度,或者是将二进制浮点数通过十进制往返到相同值所需的十进制精度,因为这些是最有意义的解释。因此范围是"6…9"one_answers"15…17"。6是保证通过binary32往返的十进制位数,9是通过decimal往返binary32所需保留的十进制位数,以此类推。
博客Exploring Binary的作者目前正在写一个关于往返的系列文章。如果您对log2(10)=3.32的解释不满意,那么接下来应该阅读本系列。