Pessoal, preciso aprender a formatar um campo que vai receber um valor monetário, no campo ai de cima foi digitado o valor 800, depois que eu gravo fica esse monte de zeros, é um campo Double, no BD access ta como monetário, não consigo formatar através do JFormattedText…
Se alguem puder ajudar, agradeço.
abraço :shock:
NumberFormat nf = new DecimalFormat("0.00");
System.out.println(nf.format(suaVariavelDouble));
pode tentar este aqui também…
NumberFormat nf = new DecimalFormat("#,###.00");
System.out.println(nf.format(n));
espero que ajude…
[]'s
obrigado pela ajuda, mas esta dando erro, é assim mesmo que eugravo no banco esse campo formatado?
try { String sqlinsert = "insert into notas (nome,cidade,valor,data,descricao,estado)values ('" +
nfnome.getText() + "','" +
nfcidade.getText() + "','" +
(nf.format( nfvalor.getText())) + "','" +
nfdata.getText() + "','" +
nfdescricao.getText()+ "','" +
nfestado.getSelectedItem() + "')";
conectanota.statement.executeUpdate(sqlinsert);
o campo a qual me refiro é o nfvalor
Qual erro está dando?
da um exception…
Então, po. Cola ai
Verifique se você não está tentando inserir o valor utilizando virgula como separador.
Acredito que o BD aceite apenas ponto…
tente algo parecido:
try { String sqlinsert = "insert into notas (nome,cidade,valor,data,descricao,estado)values ('" +
nfnome.getText() + "','" +
nfcidade.getText() + "','" +
nf.format( nfvalor.getText()).replaceAll(",",".") + "','" +
nfdata.getText() + "','" +
nfdescricao.getText()+ "','" +
nfestado.getSelectedItem() + "')";
conectanota.statement.executeUpdate(sqlinsert);
[]'s
É… Pode ser o negócio dos pontos mesmo. BD aceita formato americado (ponto). Acho que esse seria esse o caso mesmo se ele definiu o campo como númerico.
Outro ponto importante a ser considerado é com relação ao tipo da coluna, que neste caso, deveria ser do tipo DECIMAL(x,2)
esta solução parece funcionar…
[code]
NumberFormat nf = new DecimalFormat(“0.00”);
try { String sqlinsert = “insert into notas (nome,cidade,valor,data,descricao,estado)values (’” +
nfnome.getText() + “’,’” +
nfcidade.getText() + “’,’” +
nf.format( nfvalor.getText()).replaceAll(",",".") + “’,’” +
nfdata.getText() + “’,’” +
nfdescricao.getText()+ “’,’” +
nfestado.getSelectedItem() + “’)”;
conectanota.statement.executeUpdate(sqlinsert);[/code]
Qualquer coisa posta as exceptions que fica mais fácil ajudar!
[]'s
throw new IllegalArgumentException("Cannot format given Object as a Number");
da esse erro…
tem o Padrão Money que vc pode usar… isso c kizer precisão e não quiser perder grana =x …
mais informações http://sergiotaborda.wordpress.com/java/patterns/money/
e se vc não quiser , vc pode guardar em centavos no banco, assim fica sem o uso de pontos flutuantes
nfvalor.setText(nf.format(Double.parseDouble(nfvalor.getText())));
beleza pessoal funcionou…mostrei os dados dessa forma ai…
Obrigado :lol: