这是我的问题的通用解决方案(I have 在这里写了关于这个的博客 http://fraserchapman.blogspot.com/2007/05/rounding-to-specific-decimal-places.html):
var toFixed:Function = function(number:Number, factor:int) {
return Math.round(number * factor)/factor;
}
例如:
trace(toFixed(0.12345678, 10)); //0.1
- 乘
0.12345678
by 10
;这给了我们1.2345678
.
- 当我们绕圈时
1.2345678
,我们得到1.0
,
- 最后,
1.0
除以10
equals 0.1
.
另一个例子:
trace(toFixed(1.7302394309234435, 10000)); //1.7302
- 乘
1.7302394309234435
by 10000
;这给了我们17302.394309234435
.
- 当我们绕圈时
17302.394309234435
we get 17302
,
- 最后,
17302
除以10000
equals 1.7302
.
Edit
根据匿名回答below https://stackoverflow.com/a/1541929/74861,对方法上的参数进行了很好的简化,使得精度更加直观。e.g:
var setPrecision:Function = function(number:Number, precision:int) {
precision = Math.pow(10, precision);
return Math.round(number * precision)/precision;
}
var number:Number = 10.98813311;
trace(setPrecision(number,1)); //Result is 10.9
trace(setPrecision(number,2)); //Result is 10.98
trace(setPrecision(number,3)); //Result is 10.988 and so on
注意:我在这里添加了这个,以防万一有人将此视为答案并且不向下滚动......