Java - Manejo de cantidades en java

   
Vista:

Manejo de cantidades en java

Publicado por Jds_soluteg (2 intervenciones) el 15/02/2016 21:24:33
HOLA,

Tengo una duda en una aplicación que programe que suma cantidades muy grandes pero el resultado me lo manda con números y letras este es el código que utilizo :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*****************************************************************/
        String dato7;
        String dato8;
        String dato9;
        dato7 = jTextField1.getText();
        float tot1 = Float.parseFloat(dato7);
        dato8 = jTextField2.getText();
        float tot2 = Float.parseFloat(dato8);
        dato9 = jTextField3.getText();
        float tot3 = Float.parseFloat(dato9);
        float resultado = tot1 + tot2+tot3;
        String dif4 = String.valueOf(resultado);
        jTextField4.setText(dif4);
/*******************************************************************/
jTextField1= 154,345,013.20
jTextField2= 156,071,099.71
jTextField3= 112,831,975.58
resultado=  4.23248064E8 // resultado mal 
como ben el resultado esta mal tendría que ser resultado = 423,248,041.67
este codigo es con flotantes también utilice bigDecimal con este codigo:
/******************************************************************************/
        String dato7;
        String dato8;
        String dato9;
        dato7 = jTextField1.getText();
        float tot1 = Float.parseFloat(dato7);
        dato8 = jTextField2.getText();
        float tot2 = Float.parseFloat(dato8);
        dato9 = jTextField3.getText();
        BigDecimal Valor1 = new BigDecimal(tot1);
        BigDecimal Valor2 = new BigDecimal(tot2);
        BigDecimal Valor3 = new BigDecimal(tot3);
        Valor2 = Valor2.add(Valor1.setScale(2)).add(Valor3.setScale(2));
       String dif4 = String.valueOf(Valor2.setScale(2));
        jTextField4.setText(dif4);
/*****************************************************************************/
jTextField1= 154,345,013.20
jTextField2= 156,071,099.71
jTextField3= 112,831,975.58
resultado =   423,248,040.00 //resultado mal 
como ven el resultado casi se aserca al resultado = 423,248,041.67 el problema es que al parecer me redondea el resultado y lo que no puedo hacer es que no me los redondee y claro que me respete los decimales que son dos alguien me puede ayudar se los agradecería mucho .
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

Manejo de cantidades en java

Publicado por José (1 intervención) el 16/02/2016 10:08:46
Hola

Trabaja con el constructor BigDecimal(String). La propia documentación de BigDecimal así lo recomienda.

1
BigDecimal bigDecimal = new BigDecimal(Double.toString(amount));

Ejemplo:

1
2
3
4
BigDecimal bd1 = new BigDecimal("8192.55");
BigDecimal bd2 = new BigDecimal("100");
bd1 = bd1.multiply(bd2);
System.out.println("->" + bd1.toString());

Para obtener, ahora sí, 819255.00

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Manejo de cantidades en java

Publicado por Jds_soluteg (2 intervenciones) el 16/02/2016 18:34:33
Hola jose,

La idea de trabajar con en constructor BigDecimal(String); me sirvió muchísimo.

Muchas gracias te lo agradezco.
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