IEEE 754标准上的Wikipedia页面包含一个汇总不同浮点表示格式的表。这是一段摘录。
Decimal digits
列的含义是如果将尾数转换为十进制,则其尾数所代表的数字的位数。该页面表明它是由(有效位)* log_10(2)计算的。我可以看出这是有道理的。
但是,我没有看到Decimal E max
列的含义。它由(E max)* log_10(2)计算,并且应该是“十进制中的最大指数”。但是E max不是十进制的最大指数吗?
我问,因为这些'十进制'值是可以传递给Fortran中的selected_real_kind
的值(我认为)。如果使用类型selected_real_kind(6, 37)
定义实数,则它将是单精度。您的十进制数字中将包含(至少)6个有效数字。所以类似的问题是,37的含义是什么?这也是Fortran range
返回的值。 GNU Fortran文档声明“RANGE(X)返回X类型模型中的十进制指数范围”,但它无助于我理解它的含义。
答案 0 :(得分:1)
在我将它发布到StackExchange上几分钟后,我总是想出一个答案,即使我一整天都在考虑这个问题......
二进制数用m * 2 ^(e)表示,m为尾数,e为二进制指数。单精度的最大值为127。
转换为十进制的数字可以用m * 10 ^(e)表示,其中m是尾数,e是十进制的指数。要在此处具有相同(单个)精度,e的最大值为127 * log_10(2)= 38.23。你也可以通过注意m * 10 ^(127 * log_10(2))= m * 2 ^(127)来看到这一点。