我正在查看一个c ++任务,该任务读取包含十进制数的文件,并将数据结构中的每个数字存储为单个4字节float
。在更改过程之前(使用double
)我想知道文件中的数字与结构中存储的数字之间的平均误差百分比是多少。
例如,如果文件读取19.5
且数据结构为19.49999999
,则错误为
abs(19.49999999 / 19.5 - 1) = 5.128205128205128e-8 %
如果分发很重要,文件中的大多数数字都是正数且小于1000。
答案 0 :(得分:4)
32位浮点数具有23位尾数,这意味着精确到大约7-8位十进制数字的表示。确切地说,相对误差为2^-24
,或约为6e-8
。