假设我的值为15.7784514,我希望将其显示为15.77而不进行舍入.
var num = parseFloat(15.7784514);
document.write(num.toFixed(1)+"<br />");
document.write(num.toFixed(2)+"<br />");
document.write(num.toFixed(3)+"<br />");
document.write(num.toFixed(10));
Run Code Online (Sandbox Code Playgroud)
结果是 -
15.8
15.78
15.778
15.7784514000
Run Code Online (Sandbox Code Playgroud)
我如何显示15.77?
预期结果:
(1.175).toFixed(2) = 1.18 and
(5.175).toFixed(2) = 5.18
Run Code Online (Sandbox Code Playgroud)
但在JS中显示:
(1.175).toFixed(2) = 1.18 but
*(5.175).toFixed(2) = 5.17*
Run Code Online (Sandbox Code Playgroud)
如何纠正这个问题?
我用了两种方法:
Number.prototype.myRound = function (decimalPlaces) {
var multiplier = Math.pow(10, decimalPlaces);
return (Math.round(this * multiplier) / multiplier);
};
alert((239.525).myRound(2));
Run Code Online (Sandbox Code Playgroud)
数学警报应该是239.53
它的239.52
输出.所以我尝试使用.toFixed()
功能&我得到了正确的答案.
但是,当我试图得到239.575
它的答案再次给出错误的输出.
alert((239.575).toFixed(2));
Run Code Online (Sandbox Code Playgroud)
这里输出应该是239.58
它的给予239.57
.
此错误在最终输出中产生一点差异.所以有人可以帮我解决这个问题吗?
当我在十进制数字文字上调用toFixed()方法时,如下所示:
var a = 67.678.toFixed(2);
console.log(a);
Run Code Online (Sandbox Code Playgroud)
结果有效并返回67.68
但是,如果我在整数上调用该方法 - 我会收到错误
var b = 67.toFixed(2);
console.log(b); // causes ERROR
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
注意:
如果我将整数保存到变量 - toFixed()方法确实有效.
var c = 67;
c = c.toFixed(2);
console.log(c); // returns 67.00
Run Code Online (Sandbox Code Playgroud)
看到这个jsBin
引擎盖下发生了什么?