我需要证明,包含总共 24 位精度的单精度格式相当于大约 7 位十进制数字的精度。
我找到的表达式只是 log10(224) = 7.225,它产生 7 位精度的预期结果,但是,我找不到这个表达式的公式证明或关于它如何工作的直觉
对其工作原理的直觉
float
:
在 [1.0...2.0) 之间有 223 不同的
float
。float
。float
。float
。
在 [4.0...8.0) 之间有 1/2 223 不同的
float
,其间隔与 [8.0...10.0) 中的间隔一样远。float
,其间隔与 [8.0...10.0) 中的间隔一样远。float
,其间隔与 [8.0...10.0) 中的间隔一样远。
在 [1.0...10.0) 之间有 9/8 223 个不同的
float
,其间隔与 [8.0...10.0) 或 9,437,184 中的间隔一样远。
在 [1.0...10.0) 之间有 9,000,000 个不同的 7-十进制数字 值,间隔 0.000 001。
由于我们有 9,437,184 个均匀间隔的
float
来编码超过 9,000,000 个不同的值,因此我们可以声称“精度约为 7 位十进制数字”。
不同的十进制范围将导致类似的“大约7位小数”。
IIRC,最坏情况的十进制仅比“7 位小数精度”(大约 6.9?)略小一点,也许在 [1,000,000...10,000,000] 范围内。