添加2个BigDecimal值

class Point { BigDecimal x; BigDecimal y; Point(double px, double py) { x = new BigDecimal(px); y = new BigDecimal(py); } void addFiveToCoordinate(String what) { if (what.equals("x")) { BigDecimal z = new BigDecimal(5); x.add(z); } } void show() { System.out.print("\nx: " + getX() + "\ny: " + getY()); } public BigDecimal getX() { return x; } public BigDecimal getY() { return y; } public static void main(String[] args) { Point p = new Point(1.0, 1.0); p.addFiveToCoordinate("x"); p.show(); } } 

好的,我想添加2个BigDecimal值。 我正在使用带双打的构造函数(因为我认为它是可能的 – 文档中有一个选项)。 如果我在主类中使用它,我得到这个:

 x: 1 y: 1 

当我使用System.out.print来显示我的z变量时,我得到这个:

 z: 5 

BigDecimal是不可变的。 每个操作都返回一个包含操作结果的新实例:

  BigDecimal sum = x.add(y); 

如果你想改变x,那么你必须这样做

 x = x.add(y); 

阅读javadoc确实有助于理解类及其方法的工作方式。

也许这就是你喜欢的:

 BigDecimal z = new BigDecimal(5).add(x); 

BigDecimal每个操作都返回一个新的BigDecimal但不更改当前实例。