提问人:runeks 提问时间:9/15/2023 更新时间:10/30/2023 访问量:39
双精度浮点值 1.4210854715202004e-14 有什么特别之处?
What's special about the double precision floating point value 1.4210854715202004e-14?
问:
在我的一个库中,我最近看到一个断言错误,其中预期(双精度浮点)值为零,但实际值为 。谷歌搜索这个值,我得到了几个结果,都包含这个确切的值。1.4210854715202004e-14
我知道这与双精度浮点格式的不准确性有关,但为什么我(和许多其他人)会看到这个确切的值?
答:
1赞
Martin Brown
10/30/2023
#1
对于使用 Excel 和其他带有十进制数字的暂存器类型工具的非数值分析师来说,这是一种回归。这个“神奇”数字表示一个阈值,在这个阈值中,双精度的下一个十进制数字将受到舍入误差的影响,而没有意义。只有添加 1 才是真正正确的!
为了保护无辜者,相当多的程序在这 15 位小数点处截断为零,并显示或替换零而不是实际的 FP 值。
在Excel中最容易说明:
A1 : +1.4210854715202004e-14
A2 : =A1/10
A3 : =1+A1
A4 : =1+A2
A5 : =A3-1
A6 : =A4-1
A7 : =(A4-1)
在最后一个表达式周围添加括号会强制其计算到完整的 FP 精度,并向您显示实际存在的内容。您需要将单元格的格式设置为数字或科学 16 位数字,以查看舍入规则的效果。
评论