嗨,我正在运行一个简单的程序,其中一个组件是使用二次公式的二次函数求解器。我正在使用 cmath 模块 sqrt() 方法来计算判别式的 sqrt,即使判别式是正数,它仍然返回一个复数。虽然当我在 tkinter 标签中显示答案时,我使用 %.3f 作为浮点数,但它说它不会接受它,因为它是一个复数。是否也有复数占位符?
def quad(a,b,c):
global answers
print a,b,c
disc=b**2
ac4=4*a*c
disc-=ac4
sdisc=sqrt(disc)
b*=-1
a2=a*2
answer=[]
print a
if a!=0:
ans1=(b+sdisc)/a2
ans2=(b-sdisc)/a2
if ans1==ans2:
answer.append(ans1)
print type(ans1)
answers.config(text='%.3f' %ans1)
else:
answer.append(ans1)
answer.append(ans2)
answers.config(text='%.3f , %.3f' %(ans1,ans2))
elif a==0:
answers.config(text='Not a Quadratic Function.')
如果 a 为 1 且 b,c=0,0 则返回复数... cmath 无论如何都会返回复数?
尽管对复数不熟悉并且刚开始学习它们,但熟悉 python。
编辑:我现在正在使用数学模块和特殊情况的负输入,但是当我使用 %.3f 时它不允许我这样做,因为它很复杂。(我做了负数的负sqrt得到正sqrt并将其乘以1j)是否有占位符来执行此操作?(比如 %c??)谢谢