1. 程式人生 > >今天我被坑了 Bigdecimal型別判斷是否等於0(用equals方法的坑)

今天我被坑了 Bigdecimal型別判斷是否等於0(用equals方法的坑)

info.getGiveMoney()=0.00

BigDecimal.ZERO.equals(info.getGiveMoney();

居然返回 false

坑啊

Bigdecimal的equals方法不僅僅比較值的大小是否相等,首先比較的是scale(scale是bigdecimal的保留小數點位數,比如 new Bigdecimal("1.001"),scale為3),也就是說,不但值得大小要相等,保留位數也要相等,equals才能返回true。Bigdecimal b = new Bigdecimal("0") Bigdecimal c = new Bigdecimal("0.0"),用equals比較,返回就是false。
Bigdecimal.ZERO的scale為0。所以,用equals方法要注意這一點。用b.compareTo(BigDecimal.ZERO)==0,可以比較是否等於0,返回true則等於0,返回false,則不等於0