Por que DecimalFormat("0.00") retorna valores com "," virgula e nao com "."?
14 respostas
L
Luciano_Danilo
o problema e o seguinte estou usando o Decimal Formate para definir que use 2 casas decimais em valores do tipo float
DecimalFormat dec = new DecimalFormat("0.00");
porem quando difito os dados ele me retorno o valor em um JTextField com virgula, o que acontece o travamento do software quando tenta inserir esse valor no banco, ou seja o banco recebe float, e não “0,00” uma string sei la…,
detalhe todos os valores para efetuar o calculo é passado com PONTO.
tentando implementar isso, porem em quanto a classe decimalformat nao deveria funcionar
L
L.Bach
Tu está usando Windows?
Nas configurações regionais do Windows, é indicado qual será o separador decimal padrão. O padrão brasileiro é a vírgula, enquanto o ponto serve para os milhares. Tu pode alterar por lá.
O replace serve para substituir um trecho da String por outro.
Abraço
A
ajfilho
Quando você for inserir no banco, você faz a volta, usando o método parse().
Leia a API que lhe ajudará bastante.
Abraços!
M
marcosharbs
tente isso:
//aqui é sua mascaraDecimalFormatdec=newDecimalFormat("###,###,##0.00");//uma variavel com um valor qualquerdoublea=8.54698;//aqui imprimindo no console a variavel a com formato definido na mascara System.out.println(dec.format(a));
sairá isso no console: 8,55
L
Luciano_Danilo
metodo parse() para voltar String? pois e é um float que quero inserir no banco
L
Luciano_Danilo
marcosharbs:
tente isso:
//aqui é sua mascaraDecimalFormatdec=newDecimalFormat("###,###,##0.00");//uma variavel com um valor qualquerdoublea=8.54698;//aqui imprimindo no console a variavel a com formato definido na mascara System.out.println(dec.format(a));
sairá isso no console: 8,55
nao deu certo aqui essa mescara companheiro vou tentar as configuraçoes regionais do windows
Da pra importar ate a alma dessa classe e mesmo assim da erro de tipo, será que nao ha algo de anormal nesse codigo? ja tentei configurações do windows de alterar “,” para “.” e nada, e tambem fiz testes inserindo os dados manualmente com pontos e Retorno rsrsrs JOptionPane…“DADOS INSERIDOS COM SUCESSO”,
A
ajfilho
Faz assim:
Tu tens, por exemplo o JTextfield chamado valorTxt com a máscara que adotaste (DecimalFormat valorFormatado).
Tens também a classe, sei lá, Bem, e nela tens os getters e setters, e particularmente o setValor, que tem parâmetro um float.
Para pegar o que escreveste e converter para float para poder inserir no banco, faz assim:
Isso acontece por causa do Locale padrão do sistema operacional. No caso, como é pt-BR, o separador de casas decimais é a vírgula. Logo, ao chamar o método format, isso acontece. Se você precisar fazer contas com um valor formatado anteriormente, creio que a solução mais simples seja um replace para a casa decimal e um replaceAll para os separadores de milhar.
L
Luciano_Danilo
pois é marco mudei o locale do windows para o ingles funcionaou , apesar de ler sobre as dicas anteriores a aprender um pouquinhho mais… valeu abraços
M
marcobiscaro21121 like
Não precisava mudar o Locale do Windows. Bastava mudar o locale da aplicação. Inclua isso no início do programa:
Locale.setDefault(Locale.US);
E pronto!
L
Luciano_Danilo
marcobiscaro2112:
Não precisava mudar o Locale do Windows. Bastava mudar o locale da aplicação. Inclua isso no início do programa:
Locale.setDefault(Locale.US);
E pronto!
valeu marco, pensei mesmo no fato que… imagina ter que configurar as maquinas onde fosse rodar o sistema, que tipo de software é esse que só funciona em maquina de gringo rsrs, coloquei no main() o trecho e acima e …
JOptionPane…DADOS INSERIDOS COM SUCESSO, valeu e abraço.