减少小数位数

时间:2011-08-03 15:30:14

标签: actionscript-3

在AS3中,我得到一个像这样的数字:0.9130406010219044。 有没有办法减少小数的数量(除了将这个数字乘以一百万)?有没有办法在执行除法之前减少数字?

6 个答案:

答案 0 :(得分:5)

link获得以下函数,该函数舍入到任意小数位数:

public function trim(theNumber:Number, decPlaces:Number) : Number {
    if (decPlaces >= 0) {
        var temp:Number = Math.pow(10, decPlaces);
        return Math.round(theNumber * temp) / temp;
    }

    return theNumber;
} 

// Round a number to two decimal places trace(trim(1.12645, 2));
// Displays: 1.13

注意:我通过添加类型稍微改变了函数定义。请参阅链接以获取解释和原始源代码。如果theNumber小于或等于零,也会返回decPlaces

答案 1 :(得分:3)

var myNumber:Number = 74.559832;

trace(myNumber.toFixed(4)); //74.5598
trace(myNumber.toFixed(2)); //74.56

AS3文档:Number class

答案 2 :(得分:2)

如果你只想显示结果(你没有指定),那么一点点的字符串操作将产生最快的结果:

0.9130406010219044.toString().substr(0, 4);  // 0.91

答案 3 :(得分:1)

查看NumberFormatter。fractionalDigits

或者,如果您在Flex中工作:mx:NumberFormatter。precision / s:NumberFormatter。fractionalDigits

答案 4 :(得分:1)

在这里尝试一些答案:

How to deal with Number precision in Actionscript?

如果你使用NumberFormatter,请确保指定舍入(最有可能你想要最近)。

答案 5 :(得分:0)

如果你需要Number作为结果和性能,我会说这个解决方案比Math.pow()更有效率 如果你需要3位小数,只需将100改为1000。

var myNumber:Number = 3.553366582;
myNumber = (( myNumber * 100 + 0.5)  >> 0) / 100;
//trace = 3.55

展示四舍五入:

var myNumber:Number = 3.557366582;
myNumber = (( myNumber * 100 + 0.5)  >> 0) / 100;
//trace = 3.56

关于Number.toFixed()返回一个String我想是因为它在任何情况下返回2个小数: 例如:

Number(3).toFixed(2); // trace 3.00 so it has to be a String. 
相关问题