Formatação numérica em sistema operacional Ubuntu não brasileiro
Dica publicada em Java / Miscelânea
Formatação numérica em sistema operacional Ubuntu não brasileiro
Utilizando um sistema operacional Ubuntu que não esteja em Português (BR) (no meu caso
está em English) e depois de compilar o código Java com o trecho:
String s = String.format("%.d", 1000000000);
E executá-lo, é exibida a seguinte mensagem:
Me deparei com esse problema utilizando o livro "Use a cabeça - Java, 2ª ed." traduzido. Este aparente problema na verdade está relacionado a configuração do sistema e impressão do livro traduzido para português.
Para corrigir isto, siga os procedimentos a seguir:
1. Verifique se a formatação de números, datas e moeda está configurada como "Português (Brasil)" em "System > Administration > Language Support", aba "Text". Reinicie o sistema caso tenha alterado esta configuração.
2. Altere o trecho do código substituindo ponto (.) por vírgula (,):
3. Compile e execute o código novamente.
A saída de texto será:
Neste caso, o separador decimal padrão do Java é o ponto(.) e a vírgula (,) é o separador de milhares. Logo, a versão traduzida do livro nos conduz ao erro. Deve haver outras maneiras de se contornar isso pelo que li na internet, mas fica aí a dica.
String s = String.format("%.d", 1000000000);
E executá-lo, é exibida a seguinte mensagem:
Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '.'
Me deparei com esse problema utilizando o livro "Use a cabeça - Java, 2ª ed." traduzido. Este aparente problema na verdade está relacionado a configuração do sistema e impressão do livro traduzido para português.
Para corrigir isto, siga os procedimentos a seguir:
1. Verifique se a formatação de números, datas e moeda está configurada como "Português (Brasil)" em "System > Administration > Language Support", aba "Text". Reinicie o sistema caso tenha alterado esta configuração.
2. Altere o trecho do código substituindo ponto (.) por vírgula (,):
String s = String.format("%,d", 1000000000);
3. Compile e execute o código novamente.
A saída de texto será:
1.000.000.000
Neste caso, o separador decimal padrão do Java é o ponto(.) e a vírgula (,) é o separador de milhares. Logo, a versão traduzida do livro nos conduz ao erro. Deve haver outras maneiras de se contornar isso pelo que li na internet, mas fica aí a dica.