int too large to convert to float
溢出错误
Python编程时遇到int too large to convert to float
错误,例如计算pow(a, b)
时,a十分大,b是小数,也就是开1/b次方,就可能遇到这种问题。
解决方法
使用decimal模块
from decimal import *
def my_pow(x, y, prec, modulo=None):
a = Decimal(x)
b = Decimal(y)
getcontext().prec = prec
if not modulo:
c = Decimal(modulo)
return pow(a, b, c)
上面的函数返回一个Decimal实例,计算的时候记得设置第三个参数,也就是浮点数的精度,不然浮点数的精度可能会影响计算结果
Decimal实例是可以用于Python的算术运算的,但是不能进行位运算。如
from decimal import *
a = Decimal(2)
b = Decimal(3)
a + b == Decimal('5')
a - b == Decimal('-1')
a * b == Decimal('6')
a / b == Decimal('0.6666666666666666666666')
pow(a, b) == Decimal('8')
还没有评论,来说两句吧...