NumberFormat - parse e format

2 respostas
jayrmotta
import java.text.NumberFormat;
import java.text.ParseException;

public class NumberFormatTest {
	public static void main(String [] args) {
		String s = "987.123456";
		double d = 987.123456d;
		NumberFormat nf = NumberFormat.getInstance();
		nf.setMaximumFractionDigits(5);
		System.out.println(nf.format(d) + " ");
		try {
			System.out.println(nf.parse(s));
		} catch(ParseException pe) {
			System.out.println("got fckd");
		}
	}
}
Boa tarde a todos, o problema que eu estou encontrando é que de acordo com o livro o segundo s.o.p. deveria imprimir 987.123456 e isso não acontece, como teste eu resolvi fazer algumas tentativas diferentes com o mesmo algorítmo que foi fazer o
setParseIntegerOnly(true);
só para verificar se ele retornaria 987 conforme exemplos do livro e o mesmo não aconteceu. Peguei a versão inglês do livro e copiei exatamente igual a questão e o resultado também diferiu do listado pelo livro, tanto na minha máquina como na máquina de um amigo meu.

Alguém sabe algo sobre este mistério? :P

Abraço!

2 Respostas

C

Oi! Tudo bem!

Acho que a configuração regional do seu sistema operacional não está configurado como inglês. Favor, substituir o trecho de código:

NumberFormat nf = NumberFormat.getInstance(); -> NumberFormat nf = NumberFormat.getIntegerInstance(Locale.ENGLISH);

Com isso, o código irá funcionar de acordo com o esperado.

Um abraço!

C

O trecho de código colado acima é para obter o resultado 987.

Para obter o resultado 987.123456, basta substituir pelo seguinte trecho de código abaixo:

NumberFormat nf = NumberFormat.getInstance(Locale.ENGLISH);

Um abraço!

Criado 18 de maio de 2010
Ultima resposta 18 de mai. de 2010
Respostas 2
Participantes 2