3

我尝试在 Javascript 中执行 Modular Exponentiation 来验证算法,并震惊地发现Javascript 与 Python 相比没有给出准确的结果,为什么会这样。我认为这与 Javascript 处理数据类型(如文本)的方式有关,但我想了解更多信息,并且我知道设计这两种语言的目的。

.js 和 .py 中的模幂结果比较

4

2 回答 2

10
于 2013-11-02T14:15:24.247 回答
7

Python 中pow()函数返回整数输入的整数结果:

>>> pow(17, 22)
1174562876521148458974062689L

这与为您提供的功能不同Math.pow(),后者使用浮点结果:

> Math.pow(17, 22)
  1.1745628765211486e+27

Python中的等效函数是math.pow()

>>> import math
>>> math.pow(17, 22)
1.1745628765211484e+27

并受到相同的限制,尽管实际结果略有不同:

>>> math.pow(17, 22) % 21
3.0

JavaScript 只有 Number 类型,它将 JS 算术限制为浮点精度,always,而 Python 对内存绑定整数类型的支持为其提供了更大的精度范围。

于 2013-11-02T14:15:52.547 回答