JavaScript浮点数相加精度丢失问题及toFixed解决方案

作者:木棉时间:2026-10-27 14:59:43浏览:154

在JavaScript中,两个浮点数直接相加(如4.2+9.2)常出现精度丢失,结果显示为13.399999999999998而非预期的13.4。这是由于IEEE 754标准导致的二进制表示误差。通过Number((a+b).toFixed(2))可将结果保留指定位小数,从而获得精确的数值输出。

JavaScript浮点数相加精度问题

例如执行 Number(4.2)+Number(9.2) 的计算。


此时通过 alert 弹出的结果为 13.399999999999998,这是为什么?



再例如执行 Number(2.2)+Number(9.7)。


alert 弹出的结果同样为 11.899999999999998。



然而像 Number(2.3)+Number(9.9) 这样的计算。


alert 弹出的结果是 12.2,这正是我们期望得到的精确值。



为什么部分数值相加会产生大量多余的小数位,而另一些则没有?


具体代码如下:

 
<html>
<head></head>
<body>
<script>
var a=4.2;
var b=9.2;
alert(Number((a+b).toFixed(2)));
</script>
</body>
</html>
作者最新文章

相关标签: