我认为文章“每个计算机科学家应该知道浮点算术的内容”中存在一个小错误。
声称
不太常见的情况是实数超出范围,即其绝对值大于
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
右?
答案 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时,我模糊地回忆起一些奇怪的东西。