【问题标题】:adding 2 BigDecimal values [duplicate]添加2个BigDecimal值[重复]
【发布时间】:2012-01-13 12:17:09
【问题描述】:
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

【问题讨论】:

    标签: java bigdecimal


    【解决方案1】:

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

     BigDecimal sum = x.add(y);
    

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

    x = x.add(y);
    

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

    【讨论】:

      【解决方案2】:

      也许这是你喜欢的:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-12
        • 1970-01-01
        • 2016-11-02
        • 1970-01-01
        • 2016-06-12
        • 2020-01-03
        • 2021-02-13
        相关资源
        最近更新 更多