首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Actionscript为大值的模数显示不同的值?

为什么Actionscript为大值的模数显示不同的值?
EN

Stack Overflow用户
提问于 2012-04-30 16:48:31
回答 3查看 223关注 0票数 4

在ActionScript3中使用Flash CS4时,我键入以下内容:

代码语言:javascript
复制
 trace(Math.pow(97,83) % 205);

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

代码语言:javascript
复制
 97^83 mod 205

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

谢谢,Y_Y

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-30 17:49:53

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

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

Wolfram-Alpha可能使用了一个专门的库来计算大量数字,而不会损失精度。我不知道ActionScript3有这样的库,但google可能会在那里提供帮助;)

票数 9
EN

Stack Overflow用户

发布于 2012-04-30 17:51:10

因为97^83的结果太大了,在AS3中无法正确计算。请参阅http://en.wikipedia.org/wiki/IEEE_754-2008

票数 2
EN

Stack Overflow用户

发布于 2012-04-30 23:16:01

虽然你有一个正确的答案@教父在那里,这是我的5美分。

代码语言:javascript
复制
var test:String = "";

// a binary number with bit 53 up
test += "10000000"; // 8
test += "00000000"; // 16
test += "00000000"; // 24
test += "00000000"; // 32
test += "00000000"; // 40
test += "00000000"; // 48
test += "00000";    // 53

trace("test", test);
trace(parseInt(test, 2).toString(2) == test); // true

test += "1"; // bit 0 and 54 up, the rest -- down

var chck:String = parseInt(test, 2).toString(2);
trace("test", test);
trace("chck", chck);
trace(chck == test); // false

这会产生以下结果:

代码语言:javascript
复制
test 10000000000000000000000000000000000000000000000000000
true
test 100000000000000000000000000000000000000000000000000001
chck 100000000000000000000000000000000000000000000000000000
false

因此,您最多可以使用整数

代码语言:javascript
复制
dec: 9007199254740991
hex: 1FFFFFFFFFFFFF
bin: 11111111111111111111111111111111111111111111111111111

下面是另一个示例:

代码语言:javascript
复制
trace(parseFloat("9007199254740993") == parseFloat("9007199254740992"));
// output: true
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10380824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档