“每位计算机科学家应该知道的有关浮点算法的知识”中最大的可表示浮点/微小错误

问题描述

| 我相信论文“每位计算机科学家都应该知道的有关浮点运算的知识”中有一个错误。 它声称   不太常见的情况是实数超出范围,即其绝对值大于   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 对?     

解决方法

        我不会被图像打扰,所以我将为\“ beta \”写b,为\“ e_max \”写m。 所以说b是基数,p是精度,m是最大指数。 然后我认为您想要的表达式是:
(1 - b^(-p)) * b^m
例如,对于精度为4位且最大指数为12的以10为底的基数,得出:
.9999 * 10^12
...哪个是对的。 请注意,这对于IEEE浮点数来说并不完全正确,因为其中的前导\“ 1 \”位是隐式的。我隐约记得当指数均为1时的一些奇怪之处。