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

JavaScript中0.95-0.05为何得0.8999999999999999?如何得到0.90?

JavaScript中0.95-0.05结果异常的原因与解决方法

原因

JavaScript采用IEEE 754双精度浮点数标准存储数值,而大部分十进制小数无法被二进制浮点数精确表示。比如0.95和0.05转成二进制时都是无限循环的近似值,两者相减后,这种近似误差被放大,最终得到接近0.9但带有尾差的0.8999999999999999。

解决方法

转整数运算

将小数放大为整数计算后再缩小,从根源避免浮点误差:

(0.95 * 100 - 0.05 * 100) / 100 // 输出 0.9

使用toFixed()格式化

指定保留的小数位数,返回字符串后可转成数值:

Number((0.95 - 0.05).toFixed(2)) // 输出 0.9

用Math.round()四舍五入

针对需要精确到某一位的场景,通过放大后取整再缩小:

Math.round((0.95 - 0.05) * 100) / 100 // 输出 0.9

利用Number.EPSILON判断近似值

如果仅需判断结果是否接近预期值,可通过比较差值是否小于浮点数精度阈值:

const result = 0.95 - 0.05;
if (Math.abs(result - 0.9) < Number.EPSILON) {
  // 视为等于0.9
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:10:31