【问题标题】:Javascript to python math translationJavascript 到 python 数学翻译
【发布时间】:2015-12-18 12:54:07
【问题描述】:

我有一个 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 python-2.7 integer-overflow


【解决方案1】:

javascript中变量的极限是-

+/- 9007199254740991
i.e., 2^53 -1

要考虑的另一件事是,如果您要处理按位运算符和移位运算符来完成工作,它们在 32 位整数上运行,因此在这种情况下,最大安全整数是-

2^31-1, or 2147483647

希望对你有帮助!

更多参考 - MDNStackOverflow

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

注意:上面的^符号代表幂。

【讨论】:

  • 使用 ctype.c_long 包装器似乎可以解决问题。谢谢!
猜你喜欢
  • 2016-10-27
  • 2014-11-25
  • 2012-01-26
  • 2022-01-18
  • 2014-10-17
  • 2018-09-09
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
相关资源
最近更新 更多