java - setscale - añadiendo 2 valores BigDecimal
string to bigdecimal java (2)
Esta pregunta ya tiene una respuesta aquí:
- Adición para BigDecimal 10 respuestas
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, me gustaría añadir 2 valores BigDecimal. Estoy usando el constructor con dobles (porque creo que es posible, hay una opción en la documentación). Si lo uso en la clase principal, obtengo esto:
x: 1
y: 1
Cuando uso System.out.print para mostrar mi variable z, obtengo esto:
z: 5
BigDecimal es inmutable. Cada operación devuelve una nueva instancia que contiene el resultado de la operación:
BigDecimal sum = x.add(y);
Si quieres que x cambie, entonces tienes que hacerlo.
x = x.add(y);
Leer el javadoc realmente ayuda a entender cómo funciona una clase y sus métodos.
Quizás esto es lo que prefieres:
BigDecimal z = new BigDecimal(5).add(x);
Cada operación de BigDecimal
devuelve un nuevo BigDecimal
pero no cambia la instancia actual.