BigDecimal 的加法
我想对以 BigDecimal 类型表示的一些货币值进行一些简单的求和。
BigDecimal test = new BigDecimal(0);
System.out.println(test);
test.add(new BigDecimal(30));
System.out.println(test);
test.add(new BigDecimal(45));
System.out.println(test);
显然我不太了解 BigDecimal 算术,请参阅后面的输出。
Test
0
0
0
有人可以帮我吗?
I want to do some simple sums with some currency values expressed in BigDecimal
type.
BigDecimal test = new BigDecimal(0);
System.out.println(test);
test.add(new BigDecimal(30));
System.out.println(test);
test.add(new BigDecimal(45));
System.out.println(test);
Obviously I do not understand well the BigDecimal
arithmetics, see output behind.
Test
0
0
0
Can anyone help me out?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
BigDecimal 是不可变的,因此您需要执行以下操作:
The
BigDecimal
is immutable so you need to do this:它看起来像来自 Java 文档
add()
返回一个新的 BigDecimal:It looks like from the Java docs that
add()
returns a new BigDecimal:BigInteger 是不可变的,你需要这样做,
BigInteger is immutable, you need to do this,
这实际上相当容易。只需这样做:
另请参阅:
BigDecimal#add(java.math.BigDecimal)
It's actually rather easy. Just do this:
See also:
BigDecimal#add(java.math.BigDecimal)
BigInteger 是不可变的,就像字符串一样。
这意味着一旦创建了对象,我们就无法更改它的内容,但我们可以重新分配它。
.add() 将返回一个新对象
BigInteger is immutable, just like Strings.
That means we cannot change it's content once the object is created, but we can re-assign it.
.add() will return a new Object
20
20
您也可以这样做:
打印:
You can also do it like this:
Prints:
使用 Java8 lambda
这涵盖了列表中的部分或全部对象为 null 的情况。
Using Java8 lambdas
This covers cases where the some or all of the objects in the list is null.
它是不可变的,因为它在内部将您输入的 ie (15) 存储为
final private final BigInteger intVal;
在创建字符串时使用相同的概念,每个输入最终存储在
private Final char value[];
。因此不存在任何已实现的错误。It is immutable beacuse it internally store you input i.e (15) as
final private final BigInteger intVal;
and same concept use at the time of string creation every input finally store in
private final char value[];
.So there is no implmented bug.这是添加 BigDecimals 的另一个示例。关键点是它们是不可变的,只能在构造函数中初始化。这是代码:
Just another example to add
BigDecimals
. Key point is that they are immutable and they can be initialized only in the constructor. Here is the code: