style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Suma valores tipo double "0.1" obtenidos de columas de un JTable

Hola Comunidad Java

Algún tip para resolver este problema que tengo:

Tengo un método que suma los valores tipo double obtenidos de un JTable; el problema que tengo es que no los suma correctamente
algunos de los valores almacenados en el JTable son: (0.10, 0.45, 1.0) expongo a continuación el código del metodo mencionado espero puedan apoyarme

private void sumaColumnaComidas() {
                int sum = 0;
                double sumDouble = 0;
                String sumCal = "";

                DecimalFormat formatea = new DecimalFormat("0.00");

                DefaultTableModel modelo = (DefaultTableModel) comTabla1.getModel();

                for (int i = 0; i < comTabla1.getRowCount(); i++) {

                        for (int x = 0; x < comTabla1.getColumnCount(); x++) {

                                switch (x) {

                                case 1:
                                        int valor1 = Integer.parseInt((String) modelo.getValueAt(i, x));
                                        sum += valor1;

                                        sumCal = String.valueOf(sum);
                                        cTextSumCalCom1.setText(sumCal);
                                        break;
                                case 2:
                                        double valor = Double.parseDouble((String) modelo.getValueAt(i, x));

                                        sumDouble += valor;
                                        System.out.println(sumDouble);
                                        String sumCal2 ="";
                                        sumCal2 =String.valueOf(sumDouble);
                                        //sumCal2 = formatea.format(sumDouble);
                                        cTextSumProtCom1.setText(sumCal2);
                                        break;
                                case 3:
                                        double valor2 = Double.parseDouble((String) modelo.getValueAt(i, 3));
                                        sumDouble = sumDouble + valor2;
                                        String sumLip = String.format("%.2f", sumDouble);
                                        cTextSumLipCom1.setText(sumLip);
                                        break;

                                case 4:
                                        double valor3 = Double.parseDouble((String) modelo.getValueAt(i, 4));
                                        sumDouble = sumDouble + valor3;
                                        String sumCarbs = String.format("%.2f", sumDouble);
                                        cTextSumCarbsCom1.setText(sumCarbs);
                                        break;

                                default:
                                        break;
                                }

                        }

                }

        }

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Cambio de tipo

Intenta cambiar los tipo Double por BigDecimal.
En el case 1 tienes int en vez de Double también cámbialo de tipo e intenta de nuevo.

Imagen de muskafly

Cambio Tipo

He cambiado a BigDecimal pero aun no logro que sume correctamente te comparto lo que tengo
En el case 1 no cambie el tipo de dato ya que son int y ahi si me realiza la suma correctamente.

private void sumaColumnaComidas() {
                int sum = 0;
                double sumDouble = 0.0;
                String sumCal = "";

                DecimalFormat formatea = new DecimalFormat("0.00");

                DefaultTableModel modelo = (DefaultTableModel) comTabla1.getModel();

                for (int i = 0; i < comTabla1.getRowCount(); i++) {

                        for (int x = 0; x < comTabla1.getColumnCount(); x++) {

                                switch (x) {

                                case 1:
                                        int valor1 = Integer.parseInt((String) modelo.getValueAt(i, x));
                                        sum += valor1;

                                        sumCal = String.valueOf(sum);
                                        cTextSumCalCom1.setText(sumCal);
                                        break;
                                case 2:
                                        String valor = String.valueOf((String) modelo.getValueAt(i, x));
                                       
                                        BigDecimal resultado = BigDecimal.ZERO;
                                        BigDecimal valorDecimal1 = new BigDecimal(valor);
                                        resultado = resultado.add(valorDecimal1).add(valorDecimal1);
                                       
                                       
                                        System.out.println(resultado);
                                       
                                        String sumCal2 =String.valueOf(resultado);
                                        cTextSumProtCom1.setText(sumCal2);
                                        break;
                                case 3:
                                        break;

                                case 4:
                                        break;

                                default:
                                        break;
                                }

                        }

                }

        }

Imagen de neko069

¿Cuáles son tus

¿Cuáles son tus entradas?
¿Qué resultados deberían de aparecer?
¿Qué resultados son los que aparecen?

Imagen de muskafly

Mas info problema

Los campos de la tabla son estos:

alimento Calorias Proteinas
frijoles 322 21.80
Avena 52 0.40

suma los resultados de cada columna en cajas de texto

La columna de calorias suma perfectamente en el case 1
La suma de la columna Proteinas es la que no suma correctamente

21.80 + 0.40 = 22.2

Por consola imprime lo siguiente:

43.60
43.60
0.80

Imagen de neko069

No sé que tanto cambió tu

No sé que tanto cambió tu código del post principal al segundo, pero veo que tienes variables fuera del bloque switch, como sum, sumDouble y sumCal que en el post principal sí usas entre casos, si así tienes tus variables bórralas, y genera tus variables y resultados dentro de cada case para evitar que se estén sumando valores que no van.

Imagen de muskafly

Gracias neko069 ya quedo

Gracias neko069 ya quedo resuelto ahora tengo un problema con un filtro en la misma aplicación pero lo posteare en otro hilo gracias nuevamente.

Usar Siempre Bigdecimal

Para operaciones que involucren decimales siempre siempre usa BigDecimal
Aquí las razones

http://www.javamexico.org/blogs/luxspes/por_que_usar_bigdecimal_y_no_dou...
http://speleotrove.com/decimal/decifaq1.html#tzeros

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">