我发现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
答案 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);