我在javascript中使用这3个函数,直到我发现它们都给出了不正确的舍入值。 让我们说下面的Senario
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。
答案 0 :(得分:10)
不,你错了。
1.49849四舍五入到最接近的整数是1,因为小数点后面的第一个数字是4,小于5.
1.49849舍入到小数点后的三位数是1.498因为第4位是4。
只有当您舍入的第一个数字为5或更高时,它才会被四舍五入。在一些金融四舍五入系统中,精确的一半被四舍五入到最接近的偶数,所以2.5轮到2轮,但是3.5轮到4轮。