web-dev-qa-db-ja.com

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();
  }
}

OK、2つのBigDecimal値を追加したいと思います。私はダブルでコンストラクタを使用しています(可能だと思うので、ドキュメントにオプションがあります)。メインクラスで使用すると、次のようになります。

x: 1
y: 1

System.out.printを使用してz変数を表示すると、次のようになります。

z: 5
30
Marcin Erbel

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

 BigDecimal sum = x.add(y);

Xを変更したい場合は、こうする必要があります

x = x.add(y);

javadoc を読むと、クラスとそのメソッドの仕組みを理解するのに役立ちます。

66
JB Nizet

おそらくこれはあなたが好むものです:

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

BigDecimalのすべての操作は、新しいBigDecimalを返しますが、現在のインスタンスは変更しません。

7
Buhake Sindi