JavaScript toFixed 四舍五入精度问题与修正方案

作者:闭包旅人时间:2026-10-28 17:47:18浏览:178

本文探讨原生 JavaScript 中 toFixed 方法的精度异常现象。通过实例展示保留多位小数时出现的尾数误差,以及特定数值下截断不符合预期的情况。文章提供了一种通过加减 1 再取整的修正策略,以解决小数点前为零时的截取偏差,确保四舍五入结果的准确性。

toFixed 精度异常现象

在原生 JavaScript 中,可以使用 toFixed(n) 函数进行四舍五入,其中 n 代表需要保留的小数位数,取值范围为 0 到 20。

代码如下:

var num=1.0999;
console.log(num.toFixed(20));

http://jsfiddle.net/14x0vhu6/

实际输出结果并非预期的 1.0999,而是显示为 1.09990000000000009983,这一现象需要特别注意,其具体成因尚需进一步研究。

特定数值下的截取偏差

此外,在不同浏览器版本中,当小数点前的数字和需要截取的前一位数字均为 0 时,可能会出现不符合常规逻辑的截取结果。

代码如下:

var num=0.07;
console.log(num.toFixed(1));

加减 1 修正策略

http://jsfiddle.net/ogwnw2j3/ 值可能为0.0 处理的方法是使用toFixed方法之前加1,使用之后再减1。

代码如下:

var number=0.07
var fixNum = new Number(number + 1).toFixed(1);//四舍五入之前加1
var fixedNum = new Number(fixNum - 1).toFixed(1);//四舍五入之后减1,再四舍五入一下
console.log(fixedNum);

http://jsfiddle.net/euvn0L1g/

作者最新文章