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