-4

我在 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。

4

1 回答 1

10

不,你错了。

1.49849 四舍五入为 1,因为小数点后的第一位是 4,小于 5。

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

只有当您四舍五入的第一个数字为 5 或更高时,它才会被四舍五入。在一些金融舍入系统中,精确的一半被舍入到最接近的偶数,所以 2.5 舍入到 2,但 3.5 舍入到 4。

于 2013-09-24T08:37:57.523 回答