You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2019 C++17环境下double类型变量赋值结果与预期不符

现象原因说明

C++ 中的double类型遵循IEEE 754双精度浮点数标准,采用二进制格式存储数值,该特性是出现观测到的误差的核心原因:

  • 代码中写入的十进制小数值1.161050、1.161190转换为二进制后是无限循环的小数,而double仅有64位存储空间,只能截取无限序列中最接近原始值的有限位存储,截断过程会产生极小的精度偏差
  • 断点中显示的1.1610499999999999、1.1611899999999999是截断后的二进制值转回十进制的显示结果,属于double能存储的最接近原始赋值的合法值,并非编译器或者调试工具的bug

额外说明:该精度误差是所有遵循IEEE 754标准的开发环境的共有特性,和VS版本、C++标准版本、Debug/Release编译模式无关。如果业务场景对十进制精度要求极高(比如金融、计量类场景),可以改用专门的十进制数值库,或者将数值放大固定倍数转为整数存储后再做运算。

内容的提问来源于stack exchange,提问作者Pasha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:45:01