gpt4 book ai didi

javascript - toFixed javascript 函数给出奇怪的结果?

转载 作者:行者123 更新时间:2023-11-29 14:59:37 25 4
gpt4 key购买 nike

我正在尝试将数字固定为小数点后的 2 位数字,为此我正在使用 javascript 的 toFixed 函数。以下是我得到的奇怪结果,请检查并帮助我。

var number = 11.995;number.toFixed(2); // giving me 11.99 which is correctvar number = 19.995;number.toFixed(2); // giving me 20.00 which is incorrect

谁能告诉我为什么会这样。

感谢您的帮助。

最佳答案

这就是 float 学的工作原理。值 19.995 不是精确的二进制(基数 2)。为了更清楚,请在除以 10/3 时考虑一个确切的数字。

如需更深入的解释,请阅读:http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

在您的情况下,您可以改用字符串(至少看起来这就是您想要的):

number.toString().substr(0, n);

或者定义一个这样的函数(2分钟搞定,只是一个例子):

Number.toFixed = function(no, n) {
var spl = no.toString().split('.');
if ( spl.length > 1 ) {
return spl[0]+'.'+spl[1].substr(0,n);
}
return spl[0];
}

Number.toFixed(19.995, 2); // 19.99

关于javascript - toFixed javascript 函数给出奇怪的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12105787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com