在Javascript的toFixed函数中出现问题

时间:2015-03-12 10:04:13

标签: javascript jquery

我发现toFixed(2)有一个最大的问题,即如果我写5.555那么它将显示5.55,如果我写5.565那么它将显示5.57。我该怎么办?

这就是我在做的事情。声明一个数组并修复第一个数组的所有值并放入第二个数组。

var arr1 = [25.205,25.215,25.225,25.235,25.245,25.255,25.265,25.275,25.285,25.295]

var arr2 = []

for(i=0;i<10;i++){ arr2[i]= +arr1[i].toFixed(2) }

结果:

arr1 = [25.205, 25.215, 25.225, 25.235, 25.245, 25.255, 25.265, 25.275, 25.285, 25.295]

arr2 = [25.2, 25.21, 25.23, 25.23, 25.25, 25.25, 25.27, 25.27, 25.29, 25.3]

我是否必须使用Math对象的Math.floor()方法。

Math.floor(number*100)/100

2 个答案:

答案 0 :(得分:1)

这是因为分数的二进制表示略大于或小于输入的数字。请参阅已接受的答案HERE,以获得舍入为2位有效数字的替代方法。

答案 1 :(得分:0)

我已经创建了一个为我完成所有功能的功能..

function toFixed(number, precision) {
    var multiplier = Math.pow(10, precision + 1),
        wholeNumber = Math.floor(number * multiplier);
    return Math.round(wholeNumber / 10) * 10 / multiplier;
}

//Call this function to retrive exect value
toFixed((+adjustmentval), 2);