浮點數的舍入誤差
/**
* @param n Number to be rounded.
* @param precision Decimal places.
* @return Rounded Number
*/
function roundDecimal(n:Number, precision:Number):Number {
var factor:int = Math.pow(10, precision);
return (Math.round(n * factor) / factor);
}
例子:
trace(0.9 - 1); // -0.09999999999999998
trace(roundDecimal(0.9 - 1, 1)); // -0.1
trace(roundDecimal(0.9 - 1, 2)); // -0.1
trace(roundDecimal(0.9 - 1.123, 1)); // -0.2
trace(roundDecimal(0.9 - 1.123, 2)); // -0.22
trace(roundDecimal(0.9 - 1.123, 3)); // -0.223