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