为什么 Matlab Mod 与 Wolfram Alpha 不同
Why is Matlab Mod different from Wolfram Alpha
688^79 mod 3337 = 1570.
当我在 wolfram alpha 上尝试这个时,我得到:
但是当我在 Matlab 中输入同样的东西时,我得到 364 作为答案。我一定是做错了什么。
如能提供任何信息,我们将不胜感激。
我的计算器向我发送了与 Wolfram 相同的答案,它还计算了 688^79 的值,所以我倾向于相信 Wolfram 是正确的。
您可能已经用如此巨大的数字超出了 Matlab 的容量,这就是它没有发送正确答案的原因。
原因是Matlab默认使用double
浮点运算。像 688^79 这样大的数字不能准确表示为 double
。 (可以准确表示为 double
的最大整数是 of the order of 2^53)。
要获得正确的结果,您可以使用 symbolic variables,以确保您不会失去准确性:
>> x = sym('688^79');
>> y = sym('3337');
>> mod(x, y)
ans =
1570
688^79 mod 3337 = 1570.
当我在 wolfram alpha 上尝试这个时,我得到:
但是当我在 Matlab 中输入同样的东西时,我得到 364 作为答案。我一定是做错了什么。
如能提供任何信息,我们将不胜感激。
我的计算器向我发送了与 Wolfram 相同的答案,它还计算了 688^79 的值,所以我倾向于相信 Wolfram 是正确的。 您可能已经用如此巨大的数字超出了 Matlab 的容量,这就是它没有发送正确答案的原因。
原因是Matlab默认使用double
浮点运算。像 688^79 这样大的数字不能准确表示为 double
。 (可以准确表示为 double
的最大整数是 of the order of 2^53)。
要获得正确的结果,您可以使用 symbolic variables,以确保您不会失去准确性:
>> x = sym('688^79');
>> y = sym('3337');
>> mod(x, y)
ans =
1570