添加2个BigDecimal值

Mar*_*bel 30 java 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();
  }
}
Run Code Online (Sandbox Code Playgroud)

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

x: 1
y: 1
Run Code Online (Sandbox Code Playgroud)

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

z: 5
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 67

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

 BigDecimal sum = x.add(y);
Run Code Online (Sandbox Code Playgroud)

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

x = x.add(y);
Run Code Online (Sandbox Code Playgroud)

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


Buh*_*ndi 7

也许这就是你喜欢的:

BigDecimal z = new BigDecimal(5).add(x);
Run Code Online (Sandbox Code Playgroud)

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