为了账号安全,请及时绑定邮箱和手机立即绑定

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");

      }

   }

}


正在回答

2 回答

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

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

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

通常都是用的是BigDecimal类型

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

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

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

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

0 回复 有任何疑惑可以回复我~
#1

全麦吐司_3 提问者

如果不用BigDecimal类型,能得出OK吗?
2017-09-05 回复 有任何疑惑可以回复我~
#2

Gir非碼農 回复 全麦吐司_3 提问者

如果是double,如果得数非要是0.1,在我的学习里,得不到OK。 我上面也说了,我在double下能得到OK的,貌似只有3.0-3.0. 也可能有别的也能OK哈,但是得数是0.1,应该是不行的。二进制解释不了
2017-09-05 回复 有任何疑惑可以回复我~
#3

Gir非碼農 回复 全麦吐司_3 提问者

补充一句,计算这事,你是可以得到0.1的。但是在判断的时候就行不通了
2017-09-05 回复 有任何疑惑可以回复我~
#4

全麦吐司_3 提问者

非常感谢!
2017-09-05 回复 有任何疑惑可以回复我~
查看1条回复

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*/

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信