浮点数可以容纳的最大数字,同时仍保留一定的小数精度

问题描述 投票:0回答:1

我想知道 32 位浮点数可以容纳的最大正数,同时仍然能够表示大约 1/1000 的十进制分辨率。

因此,例如,如果浮点数代表千瓦,那么在我失去将其转换为瓦的能力而不会显着损失精度(比如说几瓦)之前,千瓦数可以达到多大。

floating-point precision
1个回答
0
投票

我假设您希望两个连续 Float 之间的距离小于 1/1000。

这与Float的最小精度单位(ulp)有关。

在二进制格式中,浮点具有一般形式

1.fractionBits * 2^exponent

如果浮点数的精度为p,

  • 其有效数由前导位和小数位组成,有 p 位。
  • 有 p-1 个小数位,
  • 前导 1 代表数量 2^exp
  • 第一个小数位表示数量 2^(exp-1)
  • 最后一个分数位是一个数量 2^(exp-(p-1)) 这是浮动的 ulp

现在的要求是

ulp < 1/1000
。那就是
2^(exp+1-p) < 1/1000

如果我们放宽一点要求,

ulp <= 1/1024
,那就是2^10:

 exp+1-p <= 10

所以浮点指数一定是

exp < 9 + p

对于 IEEE 754

  • 单精度,p=24,exp<33, the float must be < 2^33, about 8 billions.
  • 双精度,p=53,exp<62, the float must be < 4 * 10^18 approximately
© www.soinside.com 2019 - 2024. All rights reserved.