如何修复溢出:数学范围错误

时间:2013-06-01 18:11:04

标签: python python-3.x range python-3.3

每当我输入此代码时,我会在第4行获得OverflowError: math range error。我该如何解决?

x=0
while True:
    x=int(x)+1
    first_root=first_root-((a*(math.pow(first_root, 3)))+(b*(math.pow(first_root, 2))+(c*first_root)+d)/(3*(a*   (math.pow(first_root, 2))))+(2*(b*first_root))+c)
    if x==30:
        break

1 个答案:

答案 0 :(得分:0)

简单的答案是您使用的等式没有根。你可以通过在while循环中使用print first_root语句并看到它转换为+ -inf来看到这一点。

然而,假设你的教科书没有与你搞砸,而且方程确实有根,我几乎可以保证你在错误的地方有一个括号。以下是您的确切代码,删除了所有不需要的括号,并将first_root替换为r,以便于阅读。

r = r - a*pow(r, 3) + b*(pow(r, 2) + c*r + d) / 3*a*pow(r, 2) + 2*b*r + c

你需要做的是将它与你书中的等式进行比较,看看你把它搞砸了。