“每个计算机科学家应该知道的浮点运算”中最大的可表示的浮点/微小错误。

时间:2011-05-27 12:16:10

标签: language-agnostic floating-point

我认为文章“每个计算机科学家应该知道浮点算术的内容”中存在一个小错误。

声称

  

不太常见的情况是实数超出范围,即其绝对值大于
  http://img219.imageshack.us/img219/7396/screenshot2011052714105.png http://img219.imageshack.us/img219/7396/screenshot2011052714105.png

这几乎是精确的,最大可表示的浮点数略小于该值,当实数大于
时,实数超出范围 http://img707.imageshack.us/img707/9236/screenshot2011052714045.png http://img707.imageshack.us/img707/9236/screenshot2011052714045.png

右?

1 个答案:

答案 0 :(得分:1)

我不能为图像烦恼,所以我会为“beta”写m,为“e_max”写m。

所以说b是基数,p是精度,m是最大指数。

然后我认为你想要的表达是:

(1 - b^(-p)) * b^m

例如,对于精度为4位且最大指数为12的base-10,这给出了:

.9999 * 10^12

......这是正确的。

请注意,这不适合IEEE浮点数,因为前导“1”位是隐式的。当指数全是1时,我模糊地回忆起一些奇怪的东西。