HI我正在运行一个简单的程序,一个组件是使用二次公式的二次函数求解器。我使用cmath模块的sqrt()方法来计算判别式的sqrt,即使判别式是正数,它仍然返回一个复数。尽管当我在tkinter标签中显示答案时,我使用%.3f作为浮点数,但它表示它不会接受它,因为它是一个复数。还有一个复数的占位符吗?python String Concatenation中的占位符
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.')
它返回复数如果为1,B,C = 0,0 ...是否CMATH无论什么返回复数?
熟悉python,虽然是复杂的数字,刚开始学习它们。
编辑: 我现在使用数学模块和特殊情况负输入,但是当我使用%.3f时,它不会允许我,因为它很复杂。 (我做了负数的负数的sqrt以获得积极的sqrt并乘以1j)是否有占位符来做到这一点? (如%C 23) 感谢
我现在正在使用数学模块和特例负输入,但是当我使用%.3f时,它不会允许我,因为它很复杂。 (我做了负数的负数的sqrt以获得积极的sqrt并乘以1j)是否有占位符来做到这一点? (如%c) – user2658538
@ user2658538:...所以,你建立了一个复杂的号码吗?这种做法违背了切换到非复杂数学模块的目的。没有复杂数字的格式说明符;您必须分别格式化“真实”和“图像”组件。它看起来像你想John1024的答案。 – user2357112
但cmath总是返回复杂的,我想显示复杂和真实的数字都取决于答案是什么。如果有2个实数解或2个虚数数,我想显示它们。 – user2658538