Como formatar um float independentemente do locale?

3 respostas
andre_a_s

Bom dia senhores :slight_smile:
Preciso passar uma String para um float.
Isso é simplesmente feito com o código:

Float.parseFloat(string);

O problema é que estou fazendo um método genérico, onde o valor pode vir em diferente locales.
Por exemplo: “10.958,58” ou “10,958.58”. Onde o unico que rolaria sem erros seria “10958.58”.

Como posso fazer um parser que seja inteligente para definir um locale conforme o valor passado?

Obrigado.

3 Respostas

sergiotaborda

Use NumberFormat

R

Use um NumberFormat passando o Locale como parâmetro.

De preferência coloque ele num properties ou algo assim.

[]´s

T

Quanto é “10,958”?

  • É o valor dez mil, novecentos e cinqüenta e oito
  • É o valor dez unidades e novecentos e cinqüenta e oito milésimos

Quanto é “10.958”?

  • É o valor dez mil, novecentos e cinqüenta e oito
  • É o valor dez unidades e novecentos e cinqüenta e oito milésimos

Ou seja: não dá para ser inteligente. Você pode acertar alguns casos, mas não consegue pegar tudo, a menos que você limite um pouco as entradas. Se você chumbar 2 casas decimais, por exemplo, até dá para ser um pouco mais inteligente.

Quanto é “10,95”?

  • É o valor dez unidades e noventa e cinco centésimos.

Quanto é “10.95”?

  • É o valor dez unidades e noventa e cinco centésimos.

Da mesma maneira: “2/3/2008” é três de fevereiro de 2008 ou dois de março de 2008?

Eu sei que “2008.03.02” é sempre 2 de março de 2008, tanto é que muitos dialetos SQL preferem esse tipo de entrada porque com eles isso sempre funciona OK.

Criado 3 de março de 2008
Ultima resposta 3 de mar. de 2008
Respostas 3
Participantes 4