单精度从二进制转换为十进制的公式

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

我需要证明,包含总共 24 位精度的单精度格式相当于大约 7 位十进制数字的精度。

我找到的表达式只是 log10(224) = 7.225,它产生 7 位精度的预期结果,但是,我找不到这个表达式的公式证明或关于它如何工作的直觉

floating-point binary decimalformat
1个回答
0
投票

对其工作原理的直觉

对于常见的

float

在 [1.0...2.0) 之间有 223 不同的

float

在 [2.0...4.0) 之间有 223 不同的
float

在 [4.0...8.0) 之间有 223 不同的
float

[8.0...10.0) 之间有 1/4 * 223 不同
float

在 [4.0...8.0) 之间有 1/2 223 不同的

float
,其间隔与 [8.0...10.0) 中的间隔一样远。
[2.0...4.0) 之间有 1/4 223 个不同的
float
,其间隔与 [8.0...10.0) 中的间隔一样远。
[1.0...2.0) 之间有 1/8 223 个不同的
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] 范围内。

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