BigDecimal的大小比較

2021-09-26 21:25:30 字數 933 閱讀 2683

在比較兩個bigdecimal的值是否相等時,要特別注意,使用equals()方法不但要求兩個bigdecimal的值相等,還要求它們的scale()相等:

bigdecimal d1 = new bigdecimal("123.456");

bigdecimal d2 = new bigdecimal("123.45600");

system.out.println(d1.equals(d2)); // false,因為scale不同

system.out.println(d1.equals(d2.striptrailingzeros())); // true,因為d2去除尾部0後scale變為2

system.out.println(d1.compareto(d2)); // 0

必須使用compareto()方法來比較,它根據兩個值的大小分別返回負數、正數和0,分別表示小於、大於和等於。

總是使用compareto()比較兩個bigdecimal的值,不要使用equals()!

如果檢視bigdecimal的原始碼,可以發現,實際上乙個bigdecimal是通過乙個biginteger和乙個scale來表示的,即biginteger表示乙個完整的整數,而scale表示小數字數:

public class bigdecimal extends number implements comparable
bigdecimal也是從number繼承的,也是不可變物件。

BigDecimal的大小比較

bigdecimal a new bigdecimal 101 bigdecimal b new bigdecimal 111 使用compareto方法比較 注意 a b均不能為null,否則會報空指標 if a.compareto b 1 if a.compareto b 0 if a.comp...

BigDecimal 加 減 乘 除 比較

bigdecimal 多用於商業計算,或者較大數值得計算 bigdecimal bignum1 newbigdecimal 10 bigdecimal bignum2 new bigdecimal 5 bigdecimal bignum3 null 加法 bignum3 bignum1.add bi...

BigDecimal如何比較是否相等

例子 bigdecimal a new bigdecimal 2.00 bigdecmial b new bigdecimal 2 system.out.println a.equals b 輸出結果是 false 原因是 bigdecimal比較時,不僅比較值,而且還比較精度?解決方法 bigde...