sumar setscale round multiply decimals java bigdecimal

java - setscale - añadiendo 2 valores BigDecimal



string to bigdecimal java (2)

Esta pregunta ya tiene una respuesta aquí:

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.