廢話不多說,先看代碼
Integer a = 2;
Integer b = 2;
if(a==b){
System.out.println("相等");
}else{
System.out.println("不相等");
}
有人估計會說,臥槽,這邊簡單的代碼也好意思往這放,答案顯而易見啊,是的,答案當然是相等了,那麼再往下看下段代碼
Integer a = 200; Integer b = 200; if(a==b){ System.out.println("相等"); }else{ System.out.println("不相等"); }
再運行一下看看,是不是結果出乎意料啊?怎麼就不相等了呢???
float a = 1.0f-0.9f; float b = 0.9f-0.8f; if(a==b){ System.out.println("相等"); }else{ System.out.println("不相等"); } Float x = Float.valueOf(a); Float y = Float.valueOf(b); if(x.equals(y)){ System.out.println("相等"); }else{ System.out.println("不相等"); }
臥槽~怎麼都不相等呢?
float a = 1.0f - 0.9f; float b = 0.9f - 0.8f; float diff = 1e-6f; if (Math.abs(a - b) < diff) { System.out.println("true"); }
2、使用 BigDecimal 來定義值,再進行浮點數的運算操作。
BigDecimal a = new BigDecimal("1.0"); BigDecimal b = new BigDecimal("0.9"); BigDecimal c = new BigDecimal("0.8"); BigDecimal x = a.subtract(b); BigDecimal y = b.subtract(c); if (x.equals(y)) { System.out.println("true"); }