(该问题已解决,第二个为正确代码)
不知道结果为啥是-0.00000(结果见图片)
问题描述:
利用公式x1 = (-b + sqrt(bb-4ac))/(2a), x2 = (-b - sqrt(bb-4ac))/(2a)求一元二次方程ax2+ bx + c =0的根,其中a不等于0。
输入
输入一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程ax2 + bx + c =0的系数。
输出
输出一行,表示方程的解。
若b2 = 4 a c,则两个实根相等,则输出形式为:x1=x2=...。
若b2 > 4 a c,则两个实根不等,则输出形式为:x1=...;x2 = ...,其中x1>x2。
若b2 < 4 a c,则有两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i,即x1的虚部系数大于等于x2的虚部系数,实部为0时不可省略。实部 = -b / (2a), 虚部 = sqrt(4ac-bb) / (2*a)
所有实数部分要求精确到小数点后5位,数字、符号之间没有空格
import math
n=input().split()
a,b,c=float(n[0]),float(n[1]),float(n[2])
eps=0.000001
if abs(b*b-4*a*c)<eps :
x1 = (-b + math.sqrt(b * b - 4 * a * c)) / (2 * a)
print('x1=x2=%.5f'%x1)
elif b*b>4*a*c:
x1 = (-b + math.sqrt(b * b - 4 * a * c)) / (2 * a)
x2 = (-b - math.sqrt(b * b - 4 * a * c)) / (2 * a)
print('x1=%.5f;x2=%.5f'%(x1,x2))
else:
sb= -b / (2 * a)
xb= math.sqrt(4 * a * c - b * b) / (2 * a)
print('x1=%.5f+%.5fi;x2=%.5f-%.5fi'%(sb,xb,sb,xb))
import math
n=input().split()
a,b,c=float(n[0]),float(n[1]),float(n[2])
eps=0.000001
if abs(b*b-4*a*c)<eps :
x1 = (-b + math.sqrt(b * b - 4 * a * c)) / (2 * a)
print('x1=x2=%.5f'%x1)
elif b*b>4*a*c:
x1 = (-b + math.sqrt(b * b - 4 * a * c)) / (2 * a)
x2 = (-b - math.sqrt(b * b - 4 * a * c)) / (2 * a)
print('x1=%.5f;x2=%.5f'%(x1,x2))
else:
sb= -b / (2 * a)
xb= math.sqrt(4 * a * c - b * b) / (2 * a)
if abs(sb)<eps:
sb=0
print('x1=%.5f+%.5fi;x2=%.5f-%.5fi'%(sb,xb,sb,xb))