Javascript 到 Python 数学转换

标签 javascript python-2.7 integer-overflow

我有一个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

希望对你有帮助!

更多引用 - MDNStackOverflow

因此,您可能必须使用此值来包装您的 python 代码。

Note : ^ symbol above represents power of.

关于Javascript 到 Python 数学转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34356179/

相关文章:

javascript - 我可以将iron-localstorage 和iron-ajax 与highcharts 一起使用吗

python - 为类似数字代码的系统实现队列

c# - for循环中的整数溢出导致奇怪的行为

java算术

c++ - 长长除错

javascript - 在 iOS 5 HTML5 应用程序中通过 javascript 事件播放声音

javascript - 旋转后如何获得新的X和Y位置?

javascript - 使用 knex.js 从关联表中删除数据

Rpy2 - 数据帧列表列表

python - 尝试调用 pyusb 中的后端模块时出错。 "AttributeError: ' 模块的对象没有属性 'backend' "