Javascript round()、toFixed() 和 toPrecision() 是不正确的

Javascript round(), toFixed() and toPrecision() is incorrect

本文关键字:不正确 toPrecision toFixed round Javascript      更新时间:2023-09-26

我在javascript中玩弄这3个函数,直到我注意到它们都给出了不正确的舍入值。让我们说以下塞纳里奥

var x = 1.49849;
Math.round(x) //return 1, but from what I learnt from school it should be 2, right?
x.toFixed()   //return 1 too! same as rounding
x.toFixed(3)  //return 1.498, shouldn't it be 1.499?
x.toFixed(4)  //return 1.4985, at least this is working correctly....

我尝试了 toPrecision() 它与 toFixed() 基本相同。

看起来 javascript 中的四舍五入只考虑一个数字,而忽略了小数点的其余部分。

这种类型的Senario有什么javascript解决方法吗?

我知道我总是可以在服务器端做到这一点,但让我们只专注于javascript。

不,你错了。

1.49849 舍入到最接近的整数是 1,因为小数点后的第一个数字是 4,小于 5。

1.49849 四舍五入到小数点后的三位数字是 1.498,因为第 4 位是 4。

仅当您舍入的第一个数字为 5 或更高时,才会向上舍入。在某些金融舍入系统中,精确一半的四舍五入到最接近的偶数,因此 2.5 舍入为 2,但 3.5 舍入为 4。