Scanner in=new Scanner(System.in);
double a=in.nextDouble();
double b=in.nextDouble();
double c=in.nextDouble();
double d=b*b-4*a*c;
double x1=0;
double x2=0;
if(a==0)
System.out.println("Not quadratic equation");
else{
if(d==0){
x1=(-b+Math.sqrt(d))/(2*a);
System.out.println("x1=x2="+String.format("%.2f",x1));
}
else if(d>0){
x1=(-b-Math.sqrt(d))/(2*a);
x2=(-b+Math.sqrt(d))/(2*a);
System.out.println("x1="+String.format("%.2f",x1)+";x2="+String.format("%.2f",x2));
}
else {
x1=(-b/(2*a));
x2=(Math.sqrt(-d)/(2*a));
System.out.println("x1="+String.format("%.2f",x1)+"-"+String.format("%.2f",x2)+"i"+";x2="+String.format("%.2f",x1)+"+"+String.format("%.2f",x2)+"i");
}
}
因为浮点数误差原因,x1的值可能是一个负的很小数,当用%.2f输出时,进行四舍五入变成了负0
不知道你这个问题是否已经解决, 如果还没有解决的话: