java - 添加 2 个 BigDecimal 值

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

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

x: 1
y: 1

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

z: 5

最佳答案

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

 BigDecimal sum = x.add(y);

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

x = x.add(y);

阅读 the javadoc确实有助于理解一个类及其方法是如何工作的。

关于java - 添加 2 个 BigDecimal 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8850441/

相关文章:

java - 将 BigDecimal 舍入为 *always* 有两位小数

java - 在 java 中将美元(大十进制)转换为美分(整数)的最佳方法是什么?

java - 如何在 jsr352 中配置可重试/可跳过的异常

java - 无法覆盖 Idea 中的默认 Maven 设置

java - JVM 线程转储包含不锁定线程的监视器

java - Spring Boot 路径变量旁边的精确逗号

java - 如何在没有ListModel的情况下刷新JList

java - BigDecimal 导致 POS 程序出现内存问题的可能性有多大?

java - 强制 BigDecimals 使用科学记数法

java - 为什么指定 BigDecimal.equals 来分别比较值和比例?