🤔
[Java] BigDecimal BigInteger 計算した,でも値は変更しなかった
情報
Error.java
BigDecimal x = BigDecimal.ONE;
x.add(BigDecimal.ONE);
print(x);
状況:
xに対するadd
操作は動作しなかった。Error Messageはありません。
add
だけではなく。全ての計算は効かない,値は変更しない。
対応策
解決方法
x.add()
式をx
に代入する。
Corrected.java
// You should have imported BigDecimal or BigInteger
// at the beginning
x = x.add(BigDecimal.ONE);
原因
BigInteger.add()
まだはBigDecimal.add()
は,計算した結果を戻り値として返す。つまり,BigDecimal
とBigInteger
は,自分を持ち値を変更しない。
その理由
参考になる資料:
Praveen Kumar: JavaのBigIntegerが不変に設計されているのはなぜですか?
あれこれ編
関連記事
本もある?
Discussion