【发布时间】:2016-10-27 08:02:36
【问题描述】:
我使用了一个四舍五入到所需小数位数的函数:
function modRound(value, precision)
{
var precision_number = Math.pow(10, precision);
return Math.round(value * precision_number) / precision_number;
}
它工作正常,但不是 0.565。 modRound(0.575, 2) 给出 0.58(正确),但 modRound(0.565, 2) 给出 0.56;我预计 0.57:
function modRound(value, precision) {
var precision_number = Math.pow(10, precision);
return Math.round(value * precision_number) / precision_number;
}
function test(num) {
console.log(num, "=>", modRound(num, 2));
}
test(0.575);
test(0.565);
为什么会发生这种情况以及该怎么办?
【问题讨论】:
-
.565 * 100导致56.49999999999999见stackoverflow.com/questions/588004/… -
@JEY 不,
.5将向上取整Math.round(56.5) // -> 57 -
@vlaz 你是对的!我的错误
-
其实
modRound(0.575, 2)也有这种行为,因为0.575 * 100就是57.49999999999999。 -
@vlaz:六年后,我也不是。:-)
标签: javascript rounding