Добавление 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
Ответы
Ответ 1
BigDecimal является неизменным. Каждая операция возвращает новый экземпляр, содержащий результат операции:
BigDecimal sum = x.add(y);
Если вы хотите, чтобы x изменился, вы должны сделать
x = x.add(y);
Чтение javadoc действительно помогает понять, как работает класс и его методы.
Ответ 2
Возможно, это то, что вы предпочитаете:
BigDecimal z = new BigDecimal(5).add(x);
Каждая операция BigDecimal
возвращает новый BigDecimal
, но не меняет текущий экземпляр.