Como formatar um float independentemente do locale?
3 respostas
andre_a_s
Bom dia senhores
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?
Use um NumberFormat passando o Locale como parâmetro.
De preferência coloque ele num properties ou algo assim.
[]´s
T
thingol
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.