如何修复Adobe Flex简单乘法错误

时间:2013-12-16 15:54:12

标签: flex flex3

我们使用的是版本3.6。我们称舍入函数来清理小数部分。像这样......

private function ceilingRounding(value:Number, power:Number):Number
    {
    var scale:Number = Math.pow(10, power);
    return (Math.ceil(value * scale) / scale);
    }

以下值的函数结果是意外的: 值= 76.7549,比例= 10000。 结果应该是76.7549,但我们得到76.7550

使用调试器,我们看到该值* scale = 767549.0000000001。当然这会被四舍五入到76.7550,但为什么我们得到.0000000001以及我们如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

“NUMBERS”值保持此近似操作,您可以修改您的函数并将以下内容添加到操作中,另外我让我经常使用的函数进行舍入。

public static function roundToPrecision(numberVal:Number, precision:int = 0):Number
        {
            var decimalPlaces:Number = Math.pow(10, precision);
            return Math.round(decimalPlaces * numberVal) / decimalPlaces;
        }

如果您需要固定十进制数,请尝试

var myNum:Number = 1.123556789
myNum.toFixed(3);
trace(myNum); // 1.123

如果您需要精确十进制数,请尝试

myNum.toPrecision(3);
trace(myNum); // 1.124;

有关更多选项,请参阅链接中的四舍五入。

Reference NumberFormatter