actionscript-3 - 为什么 Actionscript 为大值的模数显示不同的值?

标签 actionscript-3 flash

在 Actionscript 3 中使用 Flash CS4 我键入以下内容:

 trace(Math.pow(97,83) % 205);

结果是 86。但是如果我输入 Wolfram-Alpha:
 97^83 mod 205

我得到 13,这是正确的答案。为什么 actionscript 显示错误的值?

谢谢,
Y_Y

最佳答案

这是由于 Number 类型的浮点精度所致。 Flash 仅使用 64 位来表示 Math.pow(97,83) 的结果,其中 53 位用于描述浮点数的尾数部分。使用 53 位时,在需要舍入数字之前,您只能获得大约 15-16 位的精度。由于 Math.pow(97,83) 是一个大约 164 位长的数字,Flash 保持形式为 7.98093813043768e+164 的近似值

由于精度损失,这不是 Math.pow(97,83) 的确切值,因此在计算 mod 时会产生不好的结果。

Wolfram-Alpha 可能使用专门的库来计算大数而不会损失精度。我不知道 Actionscript 3 有任何这样的库,但谷歌可能会在那里提供帮助;)

关于actionscript-3 - 为什么 Actionscript 为大值的模数显示不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10380824/

相关文章:

actionscript-3 - 获取Adobe AIR Mobile中软键盘的高度

actionscript-3 - 如何让应用程序在启动时自动扩展?

javascript - 任何应用程序(chrome、flash 等)如何获得比系统时间分辨率更好的时间分辨率?

actionscript-3 - 如何检查swf在AS3中是否已经失焦

javascript - ActionScript 3 中类似 JSObject 的东西?

image - AS3 平铺背景与不同的瓷砖

apache-flex - 弹性 : Loading assets into externally loaded modules

html - 如何在 swf 文件中添加链接?

ruby-on-rails - Rails/Bootstrap - Flash 通知 :success is now red and not green?

javascript - 当 Javascript 关闭时,Flash 变量在 Chrome 中无法访问