apache-flex - 如何处理Actionscript中的数字精度?

标签 apache-flex actionscript-3 actionscript

我有BigDecimal对象,已将BlazeDS序列化为Actionscript。一旦将Actionscript作为Number对象击中,它们将具有以下值:

140475.32变成140475.31999999999998

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

最佳答案

这是我针对该问题的通用解决方案(我有blogged about this here):

var toFixed:Function = function(number:Number, factor:int) {
  return Math.round(number * factor)/factor;
}


例如:

trace(toFixed(0.12345678, 10)); //0.1



0.12345678乘以10;这给了我们1.2345678
当我们舍入1.2345678时,我们得到1.0
最后,1.0除以10等于0.1


另一个例子:

trace(toFixed(1.7302394309234435, 10000)); //1.7302



1.7302394309234435乘以10000;这给了我们17302.394309234435
当我们舍入17302.394309234435时,我们得到17302
最后,17302除以10000等于1.7302



编辑

基于匿名答案below,该方法上的参数得到了很好的简化,从而使精度更加直观。例如:

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


N.B.我在这里添加了它,以防万一有人将其视为答案并且不会向下滚动...

关于apache-flex - 如何处理Actionscript中的数字精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/632802/

相关文章:

javascript - 如何访问 Adob​​e AIR 应用程序中的 iframe?

java - 使用 Java 的 Adob​​e Air Native Process

css - 已阅读 FlexVersion 兼容性 - _NOT_ Flex 3 到 Flex 4 问题

apache-flex - 弹性 : How to add a tab close button for TabNavigator component

php - 间歇性问题: POST requests getting corrupted

apache-flex - 为什么 Facebook Actionscript API init() 不起作用?

java - Flex datagrid 可能存在数据缓存问题

actionscript-3 - 改变鼠标光标

actionscript-3 - AS3 阶段 = 空?

php - 将 php $_GET 传递给 flash 播放器 xml 文件