int too large to convert to float

喜欢ヅ旅行 2022-11-30 05:44 319阅读 0赞

溢出错误

Python编程时遇到int too large to convert to float错误,例如计算pow(a, b)时,a十分大,b是小数,也就是开1/b次方,就可能遇到这种问题。

解决方法

使用decimal模块

  1. from decimal import *
  2. def my_pow(x, y, prec, modulo=None):
  3. a = Decimal(x)
  4. b = Decimal(y)
  5. getcontext().prec = prec
  6. if not modulo:
  7. c = Decimal(modulo)
  8. return pow(a, b, c)

上面的函数返回一个Decimal实例,计算的时候记得设置第三个参数,也就是浮点数的精度,不然浮点数的精度可能会影响计算结果

Decimal实例是可以用于Python的算术运算的,但是不能进行位运算。如

  1. from decimal import *
  2. a = Decimal(2)
  3. b = Decimal(3)
  4. a + b == Decimal('5')
  5. a - b == Decimal('-1')
  6. a * b == Decimal('6')
  7. a / b == Decimal('0.6666666666666666666666')
  8. pow(a, b) == Decimal('8')

发表评论

表情:
评论列表 (有 0 条评论,319人围观)

还没有评论,来说两句吧...

相关阅读