Formatando números em moedas - PHP

Formatar números inteiros ou floats com PHP é muito simples, com isso a facilidade de converter para qualquer formato de moeda se torna uma tarefa simples.

Para isso utilizaremos a função number_format().

Essa função pode receber até quatro parâmetros, conforme descrição a seguir:

  • Número - (int | float) Que no caso é o número em si que será convertido para outro formato.
  • Casas decimais - (int) O número de casas decimais que irá conter o novo formato de número.
  • Separador decimal - (string) O caractere que vai separar as casas decimais, por exemplo um ponto ou uma vírgula.
  • Separador de milhar - (string) O caractere que vai separar as casas de milhar como por exemplo um ponto.

Com o entendimento disso, podemos por exemplo formatar o número 1530 para o formato de moeda real, o formato real usa vírgula para casas decimais e um ponto para a casa de milhar, ficando da seguinte forma 1.530,00.

Então para fazer isso utilizando a função number_format basta observar o exemplo a seguir:

Formato Brasileiro


// Resultado 1.530,00
$numero = 1530;
echo number_format($numero, 2, ',', '.');

Simples não? De quebra vou deixar alguns exemplos de formatos de moedas:

Formato Inglês


// Resultado 1,530.00
$numero = 1530;
echo number_format($numero, 2, '.', ',');

Formato Francês


// Resultado 1 530,00
$numero = 1530;
echo number_format($numero, 2, ',', ' ');
Publicidade

Gostou? Compartilhe com seus amigos!

Ícone Facebook Ícone Twitter Ícone Linkedin
Comentários

Comentários

Francisco Francisco
Seta comentário

Muito boa dica cara excelente

Responder Postado em: 30/01/2017 09:10:49
Edson Costa Edson Costa
Seta comentário

Muito bom,

mas como faço pra forma esse tipo de valores

0.10211927272727

tenho esse numero acima e uma soma de porcentagem e queria pega somente

1021 e transforma-lo em decimal, isso nao e o problema, o problema e que nao estou consegguindo elimina as outras casa

com 0.
e 1927272727

quero apenas 10,21 < esse e o resulta que prendendo pega...

Responder Postado em: 15/04/2017 23:46:33
Everson da Luz Everson da Luz
Seta resposta

Obrigado Edson,

pesquisei um pouco para achar uma solução para você, provavelmente exista várias maneiras de se achar esse resultado, mas consegui da seguinte forma (não deve ser a melhor alternativa):

$removeZero = ltrim(0.10211927272727, '0.'); // 10211927272727
$numberWithComma = number_format($removeZero, 0); // 10,211,927,272,727
$posfirstComma = strpos($numberWithComma, ','); // 2
echo substr($numberWithComma, 0, $posfirstComma + 3); // 10,21

Postado em: 16/04/2017 11:25:51
opsim opsim
Seta comentário

Oloucomeucaroamigodoforum.

Responder Postado em: 24/05/2018 13:59:23
Comentários

Deixe um comentário

Subir Página