语言不可知 - 最大的可表示浮点数/"What Every Computer Scientist Should Know About Floating-Point Arithmetic"中的微小错误。



我相信《每个计算机科学家都应该知道浮点运算》这篇论文中有一个小错误。

它声称

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

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

对吧?

我不会为图像而烦恼,所以我会为"beta"写b,为"e_max"写m。

假设b是基数,p是精度,m是最大指数。

那么我想你想要的表达方式是:

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

例如,对于精度为4位、最大指数为12的10进制,这给出:

.9999 * 10^12

这是正确的。

请注意,这并不完全适用于IEEE浮点,因为前面的"1"位是隐式的。当指数都是1时,我隐约记得一些奇怪的事情。

最新更新