BigDecimal a = new BigDecimal("0.0");
BigDecimal b = new BigDecimal("0.00");
BigDecimal c = BigDecimal.ZERO;
BigDecimal d = new BigDecimal(0.0F);
BigDecimal f = new BigDecimal(0.00F);
BigDecimal g = BigDecimal.valueOf(0.0F);
BigDecimal h = BigDecimal.valueOf(0.00F);
System.out.println(a.equals(c)); //false
System.out.println(b.equals(c)); //false
System.out.println(a.equals(b)); //false
System.out.println(d.equals(c)); //true
System.out.println(b.equals(f)); //false
System.out.println(a.equals(g)); //true
System.out.println(d.equals(g)); //false
System.out.println(g.equals(h)); //true
Bigdecimal 的 equal() 方法会先比较 这个数的小数保留位数(scale),如果 scale 相同才会继续比较值是否相等。
- 比如 BigDecimal b = new BigDecimal(“0.00”); scale 为 2
- 但要注意 BigDecimal f = new BigDecimal(0.00F); scale 为 0
- .valueOf(0.0F); 和 .valueOf(0.00F); scale 为 1