Duvida NumberFormat

13 respostas
0

Boa Tarde,

Estou com o seguinte código

BigDecimal valorExato = new BigDecimal(resultado).setScale(2, RoundingMode.HALF_DOWN);

            Locale l = new Locale("pt", "BR");
            NumberFormat nf = NumberFormat.getCurrencyInstance(l);
            txtTotalDezCent.setText(String.valueOf(nf.format(valorExato)));

mas quando tento gravar no banco não grava ele esta tentando gravar com R$ e com virgula como
faço para resolver isso ??

13 Respostas

Rodrigo_Sasaki

qual o tipo do dado no seu banco?

0

No banco esta como DECIMAL 14,2

Rodrigo_Sasaki

Então você não tem que formatar nada pra persistir no banco, pode gravar o objeto diretamente.

Você está convertendo um número para uma String para tentar persistir como número, entendeu?

0

Rodrigo Sasaki:
Então você não tem que formatar nada pra persistir no banco, pode gravar o objeto diretamente.

Você está convertendo um número para uma String para tentar persistir como número, entendeu?

Então mas eu preciso que apareça o número corretamente para o usuario exemplo R$ 1,99

Rodrigo_Sasaki

Então, quando você for mostrar pro usuário você usa o NumberFormat, quando for persistir não.

0

Como faço isso ? se não for pedir muito monta um exemplinho…

0

Por que funciona assim na hora de passar para o banco ele pega o valor que esta aparecendo no jtextfield R$ 1,99

Rodrigo_Sasaki

não tem muito como exemplificar.

Você tem uma classe que se relaciona com o seu DB, talvez até uma Entity se estiver usando JPA, nessa camada do sistema seus valores numéricos são sempre números. Quando esse valor for para a sua view, e só nesse momento, você formata ele pra uma String

Rodrigo_Sasaki

Ah, entendi. Então você pode fazer o parse do valor:double valor = nf.parse(jtextfield.getText());

0

Rodrigo Sasaki:
não tem muito como exemplificar.

Você tem uma classe que se relaciona com o seu DB, talvez até uma Entity se estiver usando JPA, nessa camada do sistema seus valores numéricos são sempre números. Quando esse valor for para a sua view, e só nesse momento, você formata ele pra uma String

é nesse parte do código que ele passa os dados para o banco

classebean.setTotal10Cent(new BigDecimal(txtTotalDezCent.getText().trim()).setScale(2, RoundingMode.HALF_DOWN));

a hora que vai para ela já esta com o R$

Rodrigo_Sasaki

O parse não funcionou?

0

Da esse erro

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException at java.math.BigDecimal.<init>(BigDecimal.java:470) at java.math.BigDecimal.<init>(BigDecimal.java:739)

Rodrigo_Sasaki
Você está usando o mesmo NumberFormat que usou pra formatar?
public static void main(String[] args) throws ParseException {
        NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));

        String formattedText = nf.format(100.45);
        System.out.println(formattedText);           // Imprime 'R$ 100,45'
        System.out.println(nf.parse(formattedText)); // Imprime '100.45'
    }
Criado 27 de abril de 2015
Ultima resposta 28 de abr. de 2015
Respostas 13
Participantes 2