在比較兩個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...