真不知道自己哪里错了,明明spyder上运行就是对的
import math
def quadratic_equation(a, b, c):
x1=-b/2/a+math.sqrt((b/2/a)**2-c/a)
x2=-b/2/a-math.sqrt((b/2/a)**2-c/a)
return x1, x2
print quadratic_equation(2, 3, 0)
print quadratic_equation(1, -6, 5)
import math
def quadratic_equation(a, b, c):
x1=-b/2/a+math.sqrt((b/2/a)**2-c/a)
x2=-b/2/a-math.sqrt((b/2/a)**2-c/a)
return x1, x2
print quadratic_equation(2, 3, 0)
print quadratic_equation(1, -6, 5)
2019-07-30
虽然你已经采纳了结果,我还是想从原理上解释你遇到的情况。
首先肯定一点,你的公式是对的,用笔算能出来正确的结果。
但Python的计算方式跟笔算不同,尤其是除法符号(/)。当两个整数相除时是不会算出小数的(例:3/2的结果是1二不是1.5)
这就导致了你的式子在算第一题的delta时算成了0
因为按照Python的除法结果如下:
b/2/a = 3/2/2 = 1/2 = 0
后面因为c/a因为C是0所以无伤大雅,不然可能又会出问题,比如c等于1时。
而第二题因为恰好计算过程中都能整除,所以能得出正确结果。
关于小数运算和整数运算好像是在教程3-8的位置有讲解。
解决方法:在计算过程中尽早加入小数的运算,下面我把原式中的2变成了2.0。这样就能得出正确结果了。
t = math.sqrt((b/2.0/a)**2-c/a) x1=-b/2.0/a + t x2=-b/2.0/a - t
举报