🤔

[Java] BigDecimal BigInteger 計算した,でも値は変更しなかった

2021/04/13に公開

情報

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()は,計算した結果を戻り値として返す。つまり,BigDecimalBigIntegerは,自分を持ち値変更しない

その理由

参考になる資料:

Praveen Kumar: JavaのBigIntegerが不変に設計されているのはなぜですか?

あれこれ編

関連記事

本もある?

Discussion