gpt4 book ai didi

javascript - 当合计超过两个时,Javascript 中的舍入数字失败?

转载 作者:行者123 更新时间:2023-12-03 04:42:16 25 4
gpt4 key购买 nike

我知道我一定在这里遗漏了一些东西,我试图将任意数量的数字四舍五入到小数点后两位,但没有成功。

var sumOne = 0;
var sumTwo = 0;
[12.993, 12.99, 12.99].forEach(function(number){
sumOne += roundOne(number * 0.1);
sumTwo += roundTwo(number * 0.1);
})

function roundOne(n){
return (Math.round((n *100))/100);
}
function roundTwo(n){
return +(n.toFixed(2));
}
console.log("sumOne is ", sumOne, " sumTwo is ", sumTwo);

https://jsfiddle.net/m90ecdh9/1/

在上面的 jsfiddle 或代码中,我最终得到以下输出

sumOne is  3.9000000000000004  sumTwo is  3.9000000000000004

为什么这两种舍入方法都无法得到只有两位小数的总和?

奇怪的是,如果我尝试使用数组中只有两个数字的相同代码,我的结果与预期的一样,两种方法的总和都只有两位小数。

最佳答案

这是浮点精度的问题。最简单的解决方案:

console.log("sumOne 为 ", sumOne.toFixed(2), "sumTwo 为 ", sumTwo.toFixed(2))

您还可以将数字乘以 1000,这样它们就变成整数,对它们进行数学运算,然后再次除以 1000。

关于javascript - 当合计超过两个时,Javascript 中的舍入数字失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43036085/

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