单精度浮点数的精度(IEEE 754 标准)

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

在根据 IEEE 754 标准的数字的单精度浮点表示中,我们使用 24 位作为尾数部分(23 位 + 1 个隐含位)。所以精度可以计算为 2^24 = 10^x 其中 x 可以通过两边取 log 24log 2 = xlog 10 => x= 7.2 ~ 7 来计算。由此我们可以得出精度在十进制中是 7,但是值 7 表明我们有 7 个有效小数位的精度,或者我们有 7 个小数位的精度?是否被认为是小数点后 7 位(总共)或小数点精度最多为 7 位小数。

floating-point binary precision ieee-754
1个回答
2
投票

精度可以计算为 2^24 = 10^x ...

由此我们可以得出结论,十进制系统中的精度为 7,但值 7 表明我们有 7 位有效小数位的精度,或者我们有 7 位小数位的精度?

它被认为是小数点后 7 位(总共)还是小数点精度最多为 7 位小数。

没有。

7 可以作为精度*1粗略近似值,但浮点数并未完全以统一对数方式分布,因此“通过取对数”失败。


对于典型的 float,有 223 或 8,388,608 个值,线性分布在 [1.0 … 2.0) 范围内。同样对于范围 [0.125 … 0.5), [128.0 … 256.0), …

将文本作为精度为 7 的小数,有 9*106 或 9,000,000 个值线性分布在范围 [1.0 … 10.0) 和其他十进制中。

问题是这些范围并不总是对齐以区分 7 个有效小数位。

考虑

8589952000.0f
。下一个
float
距离 1024.0,而接下来的 7 位有效小数距离 1000.0。经过 125 步到达下一个
float
后,值为
8590080000.0f
。但这是 1000.0 的 128 步。该范围内的一些 7 个有效小数不能明确表示为
float

某些

float
的独特性有效小数位数少于 7 位。

使用

floor((24-1) * log10(2))
--> 6 确定常见的
float
最坏情况小数精度,或者对于
general
中的 float,使用
FLT_DIG


*1

log10(pow(2,23))
--> 6.9...是更好的近似值。

© www.soinside.com 2019 - 2024. All rights reserved.