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

double类型变量减法赋值后出现非预期值的技术问询

为什么double运算后得到0.89999999999997726而非0.9?

这是IEEE 754双精度浮点数(double类型)的二进制存储特性导致的精度误差,属于浮点数运算的固有现象:

  • 十进制小数0.9无法被二进制浮点数精确表示,它在二进制中是无限循环的小数,double类型只能存储它的近似值。
  • 代码里的360.9D,实际存储的并不是精确的360.9,而是一个接近该值的二进制近似值。
  • 当减去能被二进制精确存储的整数360D后,原本隐藏在360.9D里的近似误差被暴露出来,最终得到的就是那个偏离预期0.9的结果。

如果需要精确的十进制数值运算,应该使用专门的高精度十进制处理类型(比如Java中的BigDecimal),避免浮点数的精度问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:03:16