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这是正确的答案.为什么动作脚本显示错误的值? 谢谢, 解决方法
这是由于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的任何这样的库,但谷歌可能会帮助那里;) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |