问答详情
源自:4-2 Java条件语句之 if...else

double+if....else 语句怎么改为正确

public class Code{

  public static void main(String[] args){

        double a = 3.0;

        double b = 2.9;

    if(a- b == 0.1){

      System.out.println("OK");

      }else{

   System.out.println("ERRO");

      }

   }

}


提问者:全麦吐司_3 2017-09-05 21:16

个回答

  • Gir非碼農
    2017-09-05 21:36:57
    已采纳

    首先呢,一定会报错,因为你的变量写错了……

    再有呢,如果改对了,也一定打印出来的是“ERRO”……

    一般不会用double做计算结果的判定,因为它不会给出精准计算结果。

    通常都是用的是BigDecimal类型

    不然就有可能是0.98999289898892899之类的(我瞎写的,主要是举例……)

    再有,计算机计算的时候是利用二进制算的,特别对0.1,即使是正常计算,它自己也不知道0.1是什么,因为二进制没法表示,所以结果只能是逼近,但不是0.1。

    我自己竟然还试了试……除了3.0-3.0 == 0.0 其他好像都不能成功,大家可以试试……

    讷讷, 所以,可以用BigDecimal类型试试……

  • qq_不问苍天_0
    2017-09-05 21:26:17

    public class Code{

     public static void main(String[] args){

           double a = 3.0;

           double b = 2.9;

       if((a - b) == 0.1){

         System.out.println("OK");

         }else{

      System.out.println("ERRO");

         }

      }

    }

    /*使用了未定义的变量 v5 v6*/