浮动的最小正值?

mar*_*zzz 5 c++

我是C ++的新手!

Wiki这么说float:最小正态值为2 ^?126?1.18×10 ^?38,最小正(反常)值为2 ^?149?1.4×10 ^?45。

但是,如果一个浮点数最多可以有7个数字(? 7.225),则最小值不仅是0,0000001?我糊涂了 :)

Mar*_*som 6

浮点数由3个部分组成:一个符号,一个分数和一个指数。这些都是整数,将它们组合起来得到一个实数:(-1)符号 ×(分数×2 -23)×2 指数

Wikipedia文章使用带小数点的二进制数作为分数,但是我发现将其视为整数乘以固定常数会更清楚。数学上是一样的。

小数为23位,但是还有一个额外的隐藏位使其变为24位值。可以用24位表示的最大整数是16777215,它具有刚刚超过7个十进制数字。这定义了格式的精度

指数是一种神奇的魔术,它将数字的范围扩展到超出精度范围的范围。有8位保存指数,但是其中一些值很特殊。值255保留用于无限性和非数字(NAN)表示形式,它们不是实数,也不遵循上面给出的公式。值0代表非正常范围,之所以称为非正常范围,是因为该分数的隐藏位是0而不是1-未标准化。在这种情况下,指数始终为-126。请注意,非正规数的精度会随着分数变小而降低,因为它的位数更少。对于所有其他位模式1-254,小数的隐藏位为1,指数为bits-127。您可以在Wikipedia部分上查看详细信息指数编码

最小的正态数为(-1)0 ×(1×2 -23)×2 -126或1.4e-45。

最小的正归一化数是(-1)0 ×(0x800000×2 -23)×2 1-127 或1.175494e-38。


fue*_*tes -2

必须区分内部表示和格式。

在内部表示中,浮点数通常从左到右打包为符号位、指数字段和尾数或尾数。该表示是为您提到的范围定义的(数学极限)

该格式定义了“外部”表示形式,并受到可用空间的限制,从而受到数据类型精度的限制,例如大约 7 位浮点数(技术限制)。

  • 这并没有回答问题(即精度与范围的混淆)。 (2认同)