在AS3中,我得到一个像这样的数字:0.9130406010219044。 有没有办法减少小数的数量(除了将这个数字乘以一百万)?有没有办法在执行除法之前减少数字?
答案 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.