在actionscript中将大数字作为字符串转换为数字

时间:2015-01-21 10:15:40

标签: actionscript-3 numbers

对于某些值,例如“10152116260776319”,使用parseFloat或Number(“***”)方法转换为数字会将原始值增加1.

Number("10152116260776319") => 10152116260776320
Number("10202784509328139") => 10202784509328140    

有什么方法可以解决这个问题吗?或者我是否需要将所有代码更新为字符串。

提前致谢。

1 个答案:

答案 0 :(得分:0)

问题不在于parseFloatNumber("***")的问题,而在于Number类型的限制。基本上,Number类型只有在低于2 53 (9,007,199,254,740,992)时才能正确保持整数,因为它们是双精度浮点数(有关详细信息,请查看此维基百科页面) :http://en.wikipedia.org/wiki/Double-precision_floating-point_format

即使没有强制转换也会出现问题,例如

var val1:Number = 9007199254740990;
var val2:Number = 9007199254740991;
var val3:Number = 9007199254740992;
var val4:Number = 9007199254740993;
var val5:Number = 9007199254740994;

var val6:Number = 10152116260776319;

trace(val1); // 9007199254740990
trace(val2); // 9007199254740991
trace(val3); // 9007199254740992
trace(val4); // 9007199254740992
trace(val5); // 9007199254740994
trace(val6); // 10152116260776320

如果你真的需要存储大的整数,那么有人可以使用BigInthttp://as3asclublib.googlecode.com/svn-history/r29/trunk/data/BigInt.as