Duvida em formatação

5 respostas
Zeed01

Boa tarde colegas !

Ao executar essa linha:

DecimalFormat formatoValor = new DecimalFormat("0.00");
textFieldTemp.setText(formatoValor.format(Double.parseDouble(textFieldTemp.getText())));

Sendo que o conteúdo de textFieldTemp é “1234” retorna “1234,00”

Mas se volto e executo com o conteúdo de textFieldTemp como “1234,00” da uma NuberFormatException.

Ja quando o conteúdo é “1234.00” funciona.

Minha dúvida é: se uma formatação com duas casas decimais retorna com virgula como separador, porque da exception quando recebe um valor nesse mesmo formato.
E porque aceita com o ponto como separador.

???

Obrigado a todos.

[]s

5 Respostas

GiancarloBraga

Eu acho isso estranho também.
Não foi nesse tipo de uso, mas quando testei uns printf’s da vida com formatação de dinheiro e usando scanner, notei que se no console do Eclipse eu digitasse um valor com ponto ao invés de vírgula dava erro e isso era ao contrário dentro do código(posso ter invertido a ordem, porque faz tempo). Vai entender essas coisas…

Marck

é, mas tem que entender…

tipos Double não aceitam “,”(virgula), apenas “.”(ponto).

Marck.

bernardo.rafael

Seu problemaestá na classe Double.

O que acontece é que a classe Double não reconhece números com separadores de milhares e com , (virgula) como separador decimal.

:wink:

GiancarloBraga
Marck:
....

é, mas tem que entender...

tipos Double não aceitam ","(virgula), apenas "."(ponto).

Marck.

Marck!
Olá cara.

Aí que está o problema.
Eu acabei de testar aqui, e por exemplo, olha esse código:

import java.util.Scanner;

public class Teste222 {

	
	public static void main(String[] args) {
		
		Scanner entrada = new Scanner(System.in);
		
		double valor = entrada.nextDouble();
		
		System.out.println("Valor digitado: " + valor);
		
		
	}

}

Apenas um Scanner simples, que você digita algo no console do Eclipse e ele vai mostrar o valor, certo? E o valor é double!

Mas tente executar o código e digita 1,5 por exemplo.
Com vírgula ele executa tranqüilo!
Agora tenta 1.5! Dá erro. :(

A execução normal fica:

[color=blue]1,5
Valor digitado: 1.5
O valor 2 é: 1.5
[/color]

Mas quando dá erro:

[color=red]
5.6
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextDouble(Scanner.java:2387)
at Teste222.main(Teste222.java:11)
[/color]

Você sabe porque isso acontece?
Dentro do código se uso 1.5 funciona beleza!
Agora se no console digito 1.5 dá erro.
E só aceita 1,5...e vice-versa!

Marck

hum…

tem um esquema da configuração de entrada no command.

Vai em painel de controle, opções regionais de idiomas, aba opções regionais, botão configurar.

Dá uma olhada nisso…eu posso tá viajando, mas acredito que seja isso…

Se vc fizer alguma alteração, talvez ainda não funcione, pq o java já pegou as configurações. To dizendo isso pq fiz algumas alterações e mesmo assim não funcionou…mas talvez seja isso…

Abraço

Marck

Criado 21 de agosto de 2007
Ultima resposta 21 de ago. de 2007
Respostas 5
Participantes 4