当输入-4 0 0,为啥会算出-0.00的?而不是0.00


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

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^