0

Formatar valores numéricos no formato ###.###,##

criado por Marcos Regis em 18/02/2010 2:46am
Escrevi esta função para resolver dois problemas que tive. Um foi escrever números muito grandes formatados corretamente e o outro foi escrever números decimais usando separadores de decimais e de milhar no formato brasileiro sem precisar ficar passando diversos argumentos para a função como se faz com number_format.
Quando o número é muito grande há o problema dele ser convertido para notação científica.

Funciona tanto para números quanto para strings

Exemplos de uso
$hum = 1000.25;
$dois = "1.000.000,90";
$tres = "1000100,55";
$quatro = 1321023;

echo my_number_format($hum); // 1.000,25
echo my_number_format($dois); // 1.000.000,90
echo my_number_format($tres); // 1.000.100,55
echo my_number_format($quatro); // 13.210,23
Data Autor Changelog Download
18/02/2010 2:46am Marcos Regis - Versão 1.0.0

Comentários:

Mostrando 1 - 5 de 5 comentários
Parabens Marcos, essa função que você criou atende a todas nessecidades.

Valeu.
03/02/2011 2:57pm (~13 anos atrás)

Bom, Marcos, neste caso melhor colocar como outro script.

Eu realmente tive dúvidas ao colocar o número da versão. Realmente se muda estruturalmente, muda o primeiro número, só que o meu script não estava 100%. Então seria estranho eu colocar 2.0.0. Deveria colocar 2.0.0dev ?
28/02/2010 11:25pm (~14 anos atrás)

Marcos Regis disse:
Só depois percebi que usei mesmo o nome my_number_format e então apenas o enunciado estava incorreto.
Alterei o enunciado e removi a menção a money_format.

Infelizmente o Rubens não levou em consideração os exemplos postados e postou uma função que retorna valores diferentes se usados os argumentos do exemplo.

A idéia não era implementar money_format e sim facilitar o correto mascaramento de valores numéricos no padrão brasileiro.

Fica então avisado a quem for usar os scripts que a versão 1.0.0 é um mascarador para valores numéricos para o padrão brasileiro e a 1.9.0 uma alternativa a money_format
27/02/2010 11:09pm (~14 anos atrás)

Marcos Regis disse:
Realmente acabei usando o nome errado porque copiei e colei de um arquivo antigo que tinha. Era para ser my_number_format, afinal ela nem coloca simbolo de moeda.

Quanto ao código que postou eu já havia usado desta forma e não publiquei porque tive problemas com localeconv();

O vetor retornado estava vazio e não havia as informações da localidade.
Por isso não a utilizo.

Para a função money_format é melhor usar esta que postou ou aquela disponível na página da documentação passada.

Obs.: A versão deveria ter sido colocado como 2.0.0 já que é um outro algoritmo

27/02/2010 10:12pm (~14 anos atrás)

Marcos, realmente essa conversão para notação científica é muito chato.

Porém, imagino que o script que colocou não represente uma alternativa ao money_format, mas uma forma conveniente de formatar números. Acho que seria mais conveniente chamar de my_number_format.

Coloquei um código que tenta simular a função money_format para sistemas que não possuem a função. Ele é afetado pelo valor de setlocale.

setlocale(LC_MONETARY, 'pt_BR.UTF8');
echo my_money_format(1.2);
// R$ 1,20
27/02/2010 9:00pm (~14 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)