Double recebe um valor com ","

5 respostas
java
M

Pessoal to com um probleminha aqui, tenho um sistema para entrega na faculdade para conclusão do trabalho de Poo.
Na interface eu recebo os valores de um double do banco de dados, faço um calculo depois verifico em um campo se os dois valores estão batendo um com o outro. o codigo está mais ou menos assim:

aqui ele recebe o valor e exibe para o usuário como R$ 0,00

private void setarcliente (){

int setar = TblDividas.getSelectedRow();

txtIdDiv.setText(TblDividas.getModel().getValueAt(setar, 0).toString());

//exibe o valor inicial da divida

float valor = (float) (TblDividas.getModel().getValueAt(setar, 2));

String valor_decimal = String.format("%.2f", valor);

lbValorInicial.setText(String.valueOf(valor_decimal));

//atualiza o valor da divida

float valor_atualizado = (float) (TblDividas.getModel().getValueAt(setar, 2));

Date data_Abertura = (Date) (TblDividas.getModel().getValueAt(setar, 1));

Date data = new Date();
int dias;
            float juros = 0;
            float multa = (valor_atualizado * 2) / 100;
            for (dias = 0; data.after(data_Abertura); dias++) {  
                data.setDate(data.getDate() - 1);
                juros = (valor_atualizado * 0.35f) / 100;
                valor_atualizado = valor_atualizado + juros;
            }
            valor_atualizado = valor_atualizado + multa;
            String valor_atualizado_decimal = String.format("%.2f", valor_atualizado);
            lbValorFinal.setText(String.valueOf(valor_atualizado_decimal));
        }

Nesse outro metodo ele pega os valores exibidos e faz a comparação

private void pagar_divida(){
                double valor = Double.parseDouble(lbValorFinal.getText());
                double valor_atualizado = Double.parseDouble(txtVp.getText());
                if (valor == valor_atualizado){
                    int confirma = JOptionPane.showConfirmDialog(null, "Tem certeza que deseja pagar essa divida?", "Atenção", JOptionPane.YES_NO_OPTION);
                    if (confirma == JOptionPane.YES_OPTION) {
                        String encerrar = "encerrado";
                        String sql2 = "update divida set status=? where id_divida=?";
                    try {
                        pst = conexao.prepareStatement(sql2);
                        pst.setString(1, encerrar);
                        pst.setString(2, txtIdDiv.getText());
                        int apagado = pst.executeUpdate();
                        if (apagado > 0) {
                            JOptionPane.showMessageDialog(null, "Divida paga");
                            //limpa os campos
                            txtVp.setText(null);
                            lbValorFinal.setText(null);
                            lbValorFinal.setText(null);
                        }
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e);
                }
            }
                }else{
                    System.out.println("Valor diferente");
                }
            }

porem o comparador não consegue fazer a comparação porque os campos estão com “,” e eu não to conseguindo resolver isso. Ja pesquisei por todos os lados mas não consegui converter as “,” para “.” alguem consegue me dar uma luz?

5 Respostas

R

Mas aqui vc está comparando duas variáveis double, onde não há distinção de ponto ou virgula. Todo double separa o decimal com .
Quando tem a vírgula é uma representação localizada, no caso o Brasil usa , como separador de decimal, americano não.

Por exemplo:
Double.parseDouble(“34,5”)
Dá erro, a vírgula invalida o valor.

Então, quando vc diz “o comparador não consegue fazer a comparação” ou é pq dá erro na conversão se tiver vírgula ou realmente são diferentes os valores.

M

Sim, o erro é por causa da virgula, não estou conseguindo converter a virgula para ponto para conseguir fazer a comparação

R

Vc pode resolver com um simples replace:
Double.parseDouble(lbValorFinal.getText().replace(",", "."))

M

Valeu mesmo, ainda sou muito inciante em java, salvou minha vida, preciso correr pra faculdade apresentar esse projeto hoje. Muito obrigado mesmo.

G

melhor é utilizar, onde puder, a internacionalização do código com Locale.

além disso, vamos fechar esses recursos!

Criado 13 de junho de 2018
Ultima resposta 14 de jun. de 2018
Respostas 5
Participantes 3