首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Actionscript中处理数字精度?

如何在Actionscript中处理数字精度?
EN

Stack Overflow用户
提问于 2009-03-11 00:15:24
回答 10查看 49.7K关注 0票数 18

我使用BlazeDS将BigDecimal对象序列化为Actionscript.当它们作为Number对象访问Actionscript时,它们的值如下所示:

140475.32变成了140475.31999999999998

我该如何处理这件事?问题是,如果我使用精度为2的NumberFormatter,则该值将被截断为140475.31。有什么想法吗?

EN

回答 10

Stack Overflow用户

发布于 2009-10-09 05:17:57

对于任何感兴趣的人来说,这只是Frasers函数的一个小小的变化。

代码语言:javascript
复制
function setPrecision(number:Number, precision:int) {
 precision = Math.pow(10, precision);
 return (Math.round(number * precision)/precision);
}

因此,使用:

代码语言:javascript
复制
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
票数 20
EN

Stack Overflow用户

发布于 2009-09-22 20:29:17

我在ActionScript 3中使用了Number.toFixed(precision)来做这件事:http://livedocs.adobe.com/flex/3/langref/Number.html#toFixed%28%29

它正确地处理四舍五入,并指定要显示的小数点后的位数-不像Number.toPrecision()限制显示的总位数,而不考虑小数的位置。

代码语言:javascript
复制
var roundDown:Number = 1.434;                                             
// will print 1.43                                                        
trace(roundDown.toFixed(2));                                              

var roundUp:Number = 1.436;                                               
// will print 1.44                                                        
trace(roundUp.toFixed(2));                                                
票数 10
EN

Stack Overflow用户

发布于 2009-10-08 19:37:23

我把BigDecimal的Java转换成了ActionScript。我们没有选择,因为我们计算财务应用程序。

http://code.google.com/p/bigdecimal/

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/632802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档