加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 07:27:08 所属栏目:百科 来源:网络整理
导读:使用Flash CS4和Actionscript 3我输入以下内容: trace(Math.pow(97,83) % 205); 结果是86.但是如果我键入Wolfram-Alpha: 97^83 mod 205 我得到13这是正确的答案.为什么动作脚本显示错误的值? 谢谢, Y_Y 解决方法 这是由于Number类型的浮点精度. Flash仅使
使用Flash CS4和Actionscript 3我输入以下内容:

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

结果是86.但是如果我键入Wolfram-Alpha:

97^83 mod 205

我得到13这是正确的答案.为什么动作脚本显示错误的值?

谢谢,
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的任何这样的库,但谷歌可能会帮助那里;)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读