ActionScript 3 浮点数的舍入误差
示例
/** * @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