我尝试在Number
变量中存储10个 16 - 1:
var n:Number = 9999999999999999
但n
中存储的值最终为10000000000000000,或10 17 。
如何在动作3中代表10 16 - 1?
答案 0 :(得分:17)
你已经没有了数字类型的精确度,所以你必须设计自己的方式来存储这么大的数字,并具有所需的精度。操作长算术的最常用方法之一是使用字符串作为数据持有者,另一种使用整数向量,每个位置代表基于2 ^ 32的系统的“大数字”。鉴于AS3约束,我会说一个int的向量会更快,尽管使用基于字符串的方法显示一个长数字会更容易。
答案 1 :(得分:0)
作为“数字”类型,可以容纳的位数比您尝试输入的位数要多,我认为这更多是一种误算。 9,999,999,999,999,999实际上是10 ^ 17-1,老实说,您猜错了括号或没有正确解析方程式,也许您想要的是(10 ^ 16)-1最终执行了10 ^(16 -1)。当我拥有这样的方程式时,我倾向于更加谨慎一些,并且有时用括号括起来比我需要的多。我认为我曾经在AS3中对操作顺序有过不好的经验,现在在编码时对此感到很强迫。
我知道这个问题太老了,但是我觉得可以澄清一下。我认为数字类型可以容纳18,446,744,073,709,551,616,这是我通过搜索互联网发现的64位。那也是20位数字,所以绰绰有余。