python中的二次方程

时间:2014-09-08 17:58:51

标签: python

我想在python中计算这个二度方程:

10 ^ -6x ^ 2 + 10x + 10 ^ -6 = 0

使用已知公式,它在python中看起来像这样:

#This is just a small part of the program#
a = 10.**-6
b = 10.
c = 10.**-6

square = sqrt((b**2) - (4.*a*c))
numerator1 = -b - square
numerator2 = -b + square
denominator = 2.*a

print square
print numerator1
print numerator2

现在我的问题:舍入错误使我的

square = 10.0
numerator1 = -20
numerator2 = -1.98951966013e-13

为什么我的第二个分子如此偏离? -b在两种情况下都是相同的...这将使我的x2以错误的方式计算。我怎样才能解决这个问题?

2 个答案:

答案 0 :(得分:0)

由于浮点精度问题,您的问题就出现了。你可以在这里阅读更多内容 - https://docs.python.org/2/tutorial/floatingpoint.html

你可以通过四舍五入来克服这个问题 -

>>> round(numerator2, 3)
-0.0

答案 1 :(得分:0)

我相信你可能会在这篇文章中找到一些答案:Python rounding error with float numbers

此外,您应该注意:

>>> print square 10

,而

>>> square 9.999999999999801