Soma com BigDecimal

eu queria somar 2 valores com BigDecimal mas não estou conseguindo…
eu estou fazendo assim mas da um erro…

BigDecimal d1 = new BigDecimal("123456789.0123456890"); BigDecimal d2 = new BigDecimal("1500.50"); System.out.println(d1 + d2);

[quote=felipe.marques]eu queria somar 2 valores com BigDecimal mas não estou conseguindo…
eu estou fazendo assim mas da um erro…

BigDecimal d1 = new BigDecimal("123456789.0123456890"); BigDecimal d2 = new BigDecimal("1500.50"); System.out.println(d1 + d2);[/quote]

BigDecimal d1 = new BigDecimal("123456789.0123456890");
BigDecimal d2 = new BigDecimal("1500.50");
d2 = d1.add(d2);
//ou
BigDecimal d2 = d1.add(new BigDecimal("1500.50"));
System.out.println(d2);

Abraços,

Faça da seguinte forma:


System.out.println(d1.add(d2));

:smiley:

obrigado…

Olá amigos gostaria de uma ajuda sobre multiplicação e soma com bigdecimal pois estou com problemas para poder importar o valor unitário de uma tabela e multiplicar pela quantidade e mostrar o valor total desse resultado.

Meu código está assim:
Double valorTotal = 0.0;

    int index = masterTable.getSelectedRow();
    teste.will.bean.NfeCab N = list.get(masterTable.convertRowIndexToModel(index));
    Collection<correge.siscor.bean.NfeDet> ns = N.getNfeDetCollection();

    for (NfeDet NfeDet : ns) {
        if (NfeDet.getQtdeNefDet() == null) {
            NfeDet.setQtdeNefDet(1);
        }
 [color=red]   NfeDet.setVlrTotalNfeDet(NfeDet.getVlrUnitarioNfeDet() * NfeDet.getQtdeNefDet());
 
    valorTotal = valorTotal + NfeDet.getVlrTotalNfeDet();
   
        jTextField2.setText(String.valueOf(valorTotal));

[/color]
}
[color=#444444] [/color]

Na parte do código que está em vermelho da um erro dizendo que os operadores * e + não são compativeis com a classe bigdecimal

tentei implementar dessa maneira:

[color=red]
NfeDet.setVlrTotalNfeDet(NfeDet.getVlrUnitarioNfeDet().multiply(BigDecimal.TEN));Integer qtdeNfeDet = NfeDet.getQtdeNefDet();[/color]
mas ele multiplica por 10 e não pelo valor digitado

[color=#444444] [/color]
Na parte do código para mostrar o valorTotal tentei assim mas não funcionou as linhas ficam vermelhas indicando erro.

valorTotal = valorTotal .add( NfeDet.getVlrTotalNfeDet());
pois na classe bigdecimal para somar usa add, mas não consegui implementar está parte.

Não to conseguindo implementar essa parte do código com bigdecimal , sou novo no java e gostaria de uma ajuda se possivel.

Fico no aguardo dos amigos para me ajudarem nesta parte, mesmo assim obrigado a todos.

Supondo que todos os envolvidos são BigDecimal, exceto o QtdeNefDet que é Integer:

[code]
NfeDet.setVlrTotalNfeDet(NfeDet.getVlrUnitarioNfeDet().multiply(BigDecimal.valueOf(NfeDet.getQtdeNefDet()));

valorTotal = valorTotal.add(NfeDet.getVlrTotalNfeDet()); [/code]

Olá jamirdajr !

muito obrigado pela resposta deu certo a primeira linha já está pegando a quantidade e multiplicando pelo valor unitário, mas a segunda linha está dando um erro no add dizendo :

cannot find symbol
symbol: method add(java.math.BigDecimal)
location: class java.lang.Double

       NfeDet.setVlrTotalNfeDet(NfeDet.getVlrUnitarioNfeDet().multiply(BigDecimal.valueOf(NfeDet.getQtdeNefDet())));
       valorTotal = valorTotal.[u][color=red]add[/color][/u](NfeDet.getVlrTotalNfeDet());

       jTextField2.setText(String.valueOf(valorTotal));

fiquei muito contente pois já está importando os valores corretamente só falta resolver este para mostrar no jtextField2 o valor total

agradeço muito a você amigo pela ajuda e como posso resolver este outro detalhe, fico no aguardo e tenha um otimo final de semana.

Então Ribeiro,

O atributo valorTotal é da classe Double, essa era minha dúvida, se todas as variáveis envolvidas eram tipo BigDecimal.
Neste caso você precisa converter o vlrTotalNfeDet que é BigDecimal para que fique compatível Double:

valorTotal = valorTotal + NfeDet.getVlrTotalNfeDet().doubleValue();

No geral é isso, você deve compatibilizar os tipos quando os cálculos envolvem BigDecimal. Os demais tipos geralmente dão certo entre sí.

Muito obrigado Amigo!

Resolveu meu problema deu certinho .

Falar com quem entende do assunto é outra coisa agradeço muito pois o problema parece ser insignificante mas o usuario final fica reclamando, pois meu banco de dados está com decimal e na aplicação tambem, ai começou a dar uns erros, mudei tudo pra double na aplicação e funcionou, mas surgiu esse problema das casas decimais não mostrarem os valores corretamente mostrando 12,00 como 12 e 25,50 como 25.5 agora tá tudo certo muito obrigado mesmo amigo e no que puder ajudar apesar de ser iniciante no java pode contar comigo.

Um abraço e tenha um otimo final de semana.

Olá amigos

Sei que não é neste tópico, mas estou com uma duvida e gostaria de uma ajuda de vocês a respeito de jcombobox, pois criei umas telas onde pego de uma tabela do meu banco de dados o nome dos fornecedores, coloquei isso em um jcombobox, e quando o usuario precisar ele clica na jcombobox e seleciona o fornecedor, mas percebi que se a lista for muito grande e fora de ordem alfabética, fica cansativo localizar o fornecedor, gostaria de saber a maneira que posso fazer para deixar a jcombobox editavel para o usuario digitar o nome do fornecedor e ela já trazer o nome digitado, usei um CellListconverter para trazer os códigos inteiros para string, será que é possivel.

Se alguem puder me ajudar ficarei muito grato.

Um abraço e até mais.