我有一个java脚本函数,我正试图在python 2中复制它,而java脚本正在进行某种精度错误包装(或其他什么),我很难理解。这些数字很大,但这里有一个例子:
在javascript:中
a = 3141592751
b = 1234567890
result = (a*31) ^ b
window.alert(result)
此处,结果=-447877661。我认为这是因为对存储大数字的一些限制,以及对大负数的相关环绕。
使用python 2:
a = 3141592751
b = 1234567890
result = (a*31) ^ b
print result
这里,结果=98336370147,这在数学上是正确的。
如何使用python复制javascript代码的功能?环绕点是什么?谢谢
javascript中变量的极限是-
+/- 9007199254740991
i.e., 2^53 -1
还有一件事需要考虑,如果你要处理逐位运算符和移位运算符来完成你的工作,它们对32位整数进行运算,所以在这种情况下,最大安全整数是-
2^31-1, or 2147483647
希望它能有所帮助!
更多参考-MDN和StackOverflow
因此,您可能必须使用这个值来包装您的python代码。
注:上面的^符号代表的幂。