Java - BigDecimal en un Ciclo

 
Vista:

BigDecimal en un Ciclo

Publicado por Danilo Juvinao (278 intervenciones) el 19/10/2007 19:30:34
Saludos.

Tengo un problema con objetos BigDecimal, que cuando tienen que realizar operaciones como suma o resta dentro de un ciclo no adquieren los nuevos valores y el codigo esta bien, algo tan sencillo como esto:

BigDecimal suma = new BigDecimal("0.0");
BigDecimal valor = new BigDecimal("5.0");
for(int i=0; i<5; i++){
suma.add(valor);
System.out.println(suma);
}

algo tan sencillo como esto deberia mostrar algo como:
5
10
15
20
25

pero muestra
0.0
0.0
0.0
0.0
0.0

Que puede ser eso???
...... para obtener el resultado deseado tengo que hacer las operaciones usando doubles pero deseo hacerlo con BigDecimal por la precision de sus calculos y porque uso BigDecimal a traves del resto de la aplicacion.

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:BigDecimal en un Ciclo

Publicado por Dabor Domic (1 intervención) el 25/10/2007 15:28:24
Danilo: Así funciona

BigDecimal suma = new BigDecimal("0.0").setScale(2);
BigDecimal valor = new BigDecimal("5.0").setScale(2);
for(int i=0; i<5; i++)
{
suma = suma.add(valor);
System.out.println(suma);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BigDecimal en un Ciclo

Publicado por Andres (1 intervención) el 14/05/2008 16:24:30
Deberia ser algo asi:

BigDecimal suma = new BigDecimal("0.0");
BigDecimal valor = new BigDecimal("5.0");
for(int i=0; i<5; i++){
suma = suma.add(valor);
System.out.println(suma);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BigDecimal en un Ciclo

Publicado por Alfredo MONTOYA (1 intervención) el 04/09/2008 02:54:18
el metodo add es una funcion por lo que el resultado deber asignarse nuevamente a la varible para que funcione:

BigDecimal suma = new BigDecimal("0.0");
BigDecimal valor = new BigDecimal("5.0");
for(int i=0; i<5; i++){
suma = suma.add(valor);
System.out.println(suma);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BigDecimal en un Ciclo

Publicado por Mr. X (2 intervenciones) el 26/08/2009 21:20:12
La Clase BigDecimal es INMUTABLE, cuando creas un nuevo objeto con new BigDecimal("0.0"); entonces siempre sera 0.0, lo mismo pasa con el otro objeto que creaste, el valor siempre sera 5.0.
Para resolverlo necesitas guardar los valores en variables.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BigDecimal en un Ciclo

Publicado por Victor Santillan (1 intervención) el 30/11/2010 01:46:46
Lo que debes hacer es lo siguiente:

BigDecimal suma = new BigDecimal("0.0");
BigDecimal valor = new BigDecimal("5.0");
for(int i=0; i<5; i++){
suma = suma.add(valor); // <-- Se debe de reasignar el nuevo objeto
System.out.println(suma);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar