Javascript 到 python 数学翻译
Javascript to python math translation
我有一个 java 脚本函数,我试图在 python 2 中复制它,并且 java 脚本正在执行某种精确错误回绕(或其他操作) 我无法理解。这些数字很大,但这里是示例:
在java脚本中:
a = 3141592751
b = 1234567890
result = (a*31) ^ b
window.alert(result)
此处,结果 = -447877661。我假设这是因为存储大数的一些限制以及相关的环绕到一个大的负数。
使用 python 2:
a = 3141592751
b = 1234567890
result = (a*31) ^ b
print result
这里,result = 98336370147,数学上是正确的。
如何使用 python 复制 java 脚本代码的功能?什么是环绕点?谢谢!
javascript中一个变量的极限是-
+/- 9007199254740991
i.e., 2^53 -1
还需要考虑的一件事是,如果您要处理按位运算符和移位运算符来完成您的工作,它们对 32 位整数进行运算,因此在这种情况下,最大安全整数是-
2^31-1, or 2147483647
希望对您有所帮助!
更多参考 - MDN and Whosebug
因此,您可能必须使用此值来包装您的 python 代码。
Note : ^ symbol above represents power of.
我有一个 java 脚本函数,我试图在 python 2 中复制它,并且 java 脚本正在执行某种精确错误回绕(或其他操作) 我无法理解。这些数字很大,但这里是示例:
在java脚本中:
a = 3141592751
b = 1234567890
result = (a*31) ^ b
window.alert(result)
此处,结果 = -447877661。我假设这是因为存储大数的一些限制以及相关的环绕到一个大的负数。
使用 python 2:
a = 3141592751
b = 1234567890
result = (a*31) ^ b
print result
这里,result = 98336370147,数学上是正确的。
如何使用 python 复制 java 脚本代码的功能?什么是环绕点?谢谢!
javascript中一个变量的极限是-
+/- 9007199254740991
i.e., 2^53 -1
还需要考虑的一件事是,如果您要处理按位运算符和移位运算符来完成您的工作,它们对 32 位整数进行运算,因此在这种情况下,最大安全整数是-
2^31-1, or 2147483647
希望对您有所帮助!
更多参考 - MDN and Whosebug
因此,您可能必须使用此值来包装您的 python 代码。
Note : ^ symbol above represents power of.