Y_Y*_*Y_Y 4 flash actionscript-3
使用Flash CS4和Actionscript 3我输入以下内容:
trace(Math.pow(97,83) % 205);
Run Code Online (Sandbox Code Playgroud)
结果是86.但是如果我键入Wolfram-Alpha:
97^83 mod 205
Run Code Online (Sandbox Code Playgroud)
我得到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的任何这样的库,但谷歌可能会帮助那里;)
归档时间: |
|
查看次数: |
217 次 |
最近记录: |