给定一系列可表示的浮点数,如何计算我将能够存储在该范围内的IEE 754 32位浮点数中的精度位数。
例如,当执行数学计算时,结果和数字预计会在-1到1或0到16的范围内结束,我将如何计算存在多少理论位精度在这个范围内?
我意识到这些值没有均匀的间距,而且更集中在0左右,所以这使问题复杂化。最后,我想了解哪些值不会被舍入,以及在一个范围内我可以期望多少有效数字。例如,我可以期望存储(没有舍入)一个精度低至0.000001的值,范围是-1到1吗?我该如何计算呢?
答案 0 :(得分:1)
你不需要做太多工作来弄清楚你的答案。 32位IEEE 754浮点数具有23位尾数;计数前导1给出24个有效二进制数字(watch out for denorms)。通过doing some logarithms或在table on wikipedia中查找,您会看到约为7.22十进制数字。
让我们把这个事实应用到你的一个例子中。因此,您想要的所有数字(精度低至0.000001)都可以在-1到1的范围内表示 - 这些数字的有效数均为7或更少。
关于计算范围内精确理论位的另一个问题 - 各处都是一样的。精确度与幅度无关 - 你到处都得到相同数量的有效数字(同样要注意变形)。正如你所提到的那样,可表示的数字在绝对意义上确实开始间隔更远。
如果你想要没有舍入的数字,你需要选择可以用二进制分数乘以2的幂来表示的数字。