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 文档可以帮助您更好地理解。

如果要将 bd1 和 bd2 的总和存储在 bd1 中,则必须这样做

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

雷默斯是对的。您需要将值分配给结果,如下所示:

bd1 = bd1.add(bd2);

如果您想了解有关不可变的详细信息,可以参考以下链接:

不可变是什么意思?

于 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 回答