pow()筹集浮动

Wil*_*ill 5 python math

为什么提升到表示为浮点数的整数会给出以整数形式提高相同数字的不同结果?

例如:

>>> pow(10,25)%195
10L
>>> pow(10,25.0)%195
64.0
Run Code Online (Sandbox Code Playgroud)

我尝试使用mpmathpower()代替,但得到完全相同的数字 - 和错误 - 作为第二种形式.

如何在Python中提升到非常大的非整数幂并对它们执行mod(例如,使用纯数学执行类似RSA的逻辑的步骤)?

Eri*_*ric 6

对于整数,您可以使用pow的3参数形式:

pow(10, 25, 195)
Run Code Online (Sandbox Code Playgroud)

这里的问题源于浮子的精度损失.你需要在decimal.Decimal这里使用s:

>>> from decimal import Decimal
>>> pow(10, Decimal('25.0')) % 195
Decimal('10')
Run Code Online (Sandbox Code Playgroud)