4

私は2つBigDecimalの番号を持っています。それらを追加しようとしています。私のコードは次のとおりです。

BigDecimal bd1 = new BigDecimal(10);
BigDecimal bd2 = new BigDecimal(10);

bd1.add(bd2);

ここでは、bd1 20 の値を期待していますが、何度も 10 が表示されています。追加されていません。私が何か間違ったことをした場合は助けてください。

4

5 に答える 5

10

BigDecimal値は不変です。次の結果に値を代入する必要がありますadd:

bd1 = bd1.add(bd2);
于 2013-03-20T13:38:56.007 に答える
3

BigDecimal は不変です。すべての操作は、操作の結果を含む新しいインスタンスを返します。

BigDecimal に関する Java Doc を読むと、理解が深まります。

bd1 と bd2 の合計を bd1 に格納する場合は、次のようにする必要があります。

bd1 = bd1.add(bd2);
于 2013-03-20T13:40:20.317 に答える
3

レイメウス そうです。次のように結果に値を割り当てる必要があります。

bd1 = bd1.add(bd2);

immutable について詳しく知りたい場合は、次のリンクを参照してください。

不変 とはどういう意味ですか?

于 2013-03-20T13:44:51.970 に答える
2

これを試して:

BigDecimal bd1 = new BigDecimal(10);
BigDecimal bd2 = new BigDecimal(10);
bd1 = bd1.add(bd2);
System.out.println(bd1); /*Prints 20*/
于 2013-03-20T13:43:11.110 に答える
1

結果を新しい変数に保存する必要があります。

BigDecimal bd3 = bd1.add(bd2);
于 2013-03-20T13:39:56.497 に答える