Algumas excelentes respostas já estão aqui, mas elas não mencionam uma coisa que eu acho importante não esquecer: certifique-se de onde quer que uma formatação numérica ocorra, é claro (ou pode ser controlado) para que serve a saída:
-
quando é para a interface do usuário, a formatação localizada deve ser aplicada
-
quando o número for gravado em um arquivo, ou enviado pela rede, ou outra forma de onde o número é necessário no formato legível por máquina , verifique se ele é < strong> not formatado de acordo com a cultura atual, mas de acordo com uma configuração fixa (por exemplo, no ambiente .NET, use InvariantCulture
).
Caso contrário, você terá problemas quando os números forem escritos ou enviados usando a cultura A e lidos ou recebidos usando a cultura B.
Para minha experiência, este é um dos maiores obstáculos na localização adequada de números: na tentativa de centralizar a formatação e conversão de números, as pessoas começam a criar funções gerais e reutilizáveis para a formatação e começam a usá-las por todo o lugar. No entanto, assim que alguém precisar dos números também em um formato de string legível por máquina em algum outro lugar do programa, duas variantes serão necessárias: uma formatação localizada e uma não localizada. Isso apresenta um alto risco de misturar as duas formas de conversão (especialmente quando os desenvolvedores e máquinas de teste têm suas configurações de localidade padrão semelhantes à configuração "fixa" usada para formatação não-UI, mas parte da base de usuários não).
Adendo: este problema pode se tornar realmente desagradável em situações em que não está claro de antemão se o número será processado por uma máquina, ou por um humano (ou ambos) mais tarde. Por exemplo, como parte da saída de um arquivo de log. Em tais casos, é melhor seguir o padrão "neutro" de não usar nenhum separador, exceto o ponto como separador decimal.