首页 >后端开发 >C++ >为什么双精度的小数位数比其宣传的 15 位要多?

为什么双精度的小数位数比其宣传的 15 位要多?

Patricia Arquette
Patricia Arquette原创
2024-12-06 20:40:18572浏览

Why Does Double Precision Appear to Have More Decimal Places Than Its Advertised 15?

双精度和小数位精度

在计算机编程中,双精度数据类型通常被假定为具有 15 位小数的近似精度。但是,某些数字表示形式(例如 1.0/7.0)在变量内部表示时似乎具有更高的精度。本文将探讨为什么会发生这种情况,以及为什么精度通常被描述为小数点后 15 位左右。

内部表示

IEEE 双精度数有 53 个有效位,大约等于 15.95 个小数位。为了考虑舍入,实现将精度 (DBL_DIG) 设置为 15。这几乎提供了超出 DBL_DIG 所暗示的精度的额外十进制数字。

输出精度

显示双精度时,编译器通常根据精度对值进行舍入。例如,1.0/7.0,当显示为“%.17g”时,具有 17 位精度。但是,如果使用“%.64g”,则不会出现超出预期 15 位精度的有效数字。

结论

双精度数字具有允许大约 15.95 位十进制数字的内部表示形式的精度。然而,由于四舍五入的原因,显示精度通常设置为小数点后 15 位。此解释有助于阐明为什么某些精确数字(例如 1.0/7.0)在内部似乎具有更高的精度,但在显示时仍符合估计的 15 位精度。

以上是为什么双精度的小数位数比其宣传的 15 位要多?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn