擅长:python、mysql、java
<p>看起来</p>
<pre><code>b**2 - a*c
</code></pre>
<p>是否定的。将该值传递给<code>sqrt()</code>时,将遇到域错误。在</p>
<p>即使您认为表达式的计算结果应为正值,浮点舍入错误也可能导致负值。请记住,浮点运算并不精确。在</p>
<p>虽然一个更可能的解释是你把表达式转录错误了。你当然是说:</p>
^{pr2}$
<p>话虽如此,如果二次曲线没有实解,那么你会遇到域误差。如果二次型有重复的实解(即两个解的值相同),那么舍入误差也会导致域误差。在</p>
<p>例如,考虑以下等式:</p>
<pre><code>(x-0.7)(x-0.7) = 0
</code></pre>
<p>系数为:</p>
<pre><code>a: 1.0
b: -1.4
c: 0.49
</code></pre>
<p>如果将这些输入到Python中,会得到以下结果:</p>
<pre>
>>> a=1.0
>>> b=-1.4
>>> c=0.49
>>> b**2 - 4*a*c
-2.220446049250313e-16
</pre>
<p>所以即使方程有一个真正的解,你仍然可能会碰到这个问题。在</p>