NumberFormat - parse e format

[code]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”);
}
}
}[/code]

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? :stuck_out_tongue:

Abraço!

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!

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!