本题目要求一元二次方程ax 2 +bx+c=0的根,结果保留2位小数。(注意:0.00会在gcc下被输出为-0.00,需要做特殊处理,输出正确的0.00。)
时间: 2024-10-18 22:12:54 浏览: 279
用Java编写程序,求一元二次方程ax²+bx+c=0的根(系数在程序中给定),并输出。
这个题目是关于编写程序求解一元二次方程的,给定的一般形式为 \( ax^2 + bx + c = 0 \),其中a、b、c是已知系数,通常使用公式法(也称为韦达定理)来解这个问题。对于非零的a,方程的解由下面两个公式给出:
\[ x_1 = \frac{-b - \sqrt{b^2 - 4ac}}{2a} \]
在实际编程中,你需要对可能出现的负判别式(\( b^2 - 4ac < 0 \))进行特殊处理,并考虑浮点数的精度问题,如避免由于四舍五入导致的0.00显示为-0.00的情况。这里可以使用Python的`Decimal`模块来提高精度。示例代码如下:
```python
from decimal import Decimal, getcontext
def solve_quadratic(a, b, c):
delta = Decimal(b**2) - 4 * a * c
if delta >= 0:
root1 = (- Decimal(delta).sqrt()) / (2 * a)
return round(root1, 2), round(root2, 2)
else:
return None, None # 复数根,或者无法表示成实数的情况
# 示例
a = 1
b = -5
c = 6
result = solve_quadratic(a, b, c)
if result is not None:
print(f"x1 = {result[0]}, x2 = {result[1]}")
else:
print("无实数解")
```
阅读全文