BigDecimal是 java.math包下提供的一種用於精確運算的類型
用於表示數字。進行數字間的判斷。比較數字大小。
阿里巴巴開發手冊原文
試驗
輸出結果
造成這種結果是因為精度問題!
BigDecimal中 equals源碼
bigDecimal0 和 bigDecimal1 傳的都是整數,不存在精度問題
bigDecimal2 和 bigDecimal3 傳的都是浮點數 double,
創建一個double類型0.1 其實不是正好的0.1 而是0.1000000000000000055511151231257827021181583404541015625, double自身知識表示一個近似值
無論是0.1 還是0.10 本質都是0.1 精度都是55位 所以精度相同
bigDecimal4 和 bigDecimal5 傳的都是字符串,
當我們使用new BigDecimal("0.1")創建一個BigDecimal 的時候,其實創建出來的值正好就是等於0.1的。那么他的精度也就是1。
如果使用new BigDecimal("0.10000"),那么創建出來的數就是0.10000,精度也就是5。
因為BigDecimal("1.0")和BigDecimal("1.00")的精度不一樣,所以在使用equals方法比較的時候,得到的結果就是false。
BigDecimal中提供了compareTo方法,這個方法就可以只比較兩個數字的值,如果兩個數相等,則返回0。