我有可能是极端情况。当试图将值四舍五入4.015
到小数点后 2 位时,我总是以4.01
而不是预期的4.02
. .015
对于所有带有小数部分的数字,这种情况始终如一。
我在 JS 中使用了一个相当常见的方法:
val = Math.round(val * 100) / 100;
我认为问题是在乘以 100 时开始的。浮点不准确导致该值向下舍入而不是向上舍入。
var a = 4.015, // 4.015
mult = a * 100, // 401.49999999999994 (the issue)
round = Math.round(mult), // 401
result = round / 100; // 4.01 (expected 4.02)
小提琴:http: //jsfiddle.net/eVXRL/
如果我尝试四舍五入,则不会发生此问题4.025
。的期望值4.03
确实返回;.015
这只是(到目前为止)的一个问题。
有没有办法优雅地解决这个问题?当然,.015
一次性查找和处理该案例是有技巧的,但这似乎是错误的!