Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

-_KIKO_-

[Resolvido] Funçao PHP - casas decimais

Recommended Posts

Pessoal alguem tem uma função PHP para controlar dinheiro que é inputado sem casas decimais e sem separadores ?

 

No caso eu tenho o valor que vem do banco como 4000 que no caso significa R$ 40,00...

 

Se eu dou number_format neste valor ele retorna R$ 4.000.....estou precisando que ao entrar 4000 ele mostre 40,00... se entrar 12000 ele mostre 120,00....etc

 

 

Alguem tem essa função pronta?

É comum do pessoal que trabalha com pagseguro ter;

Compartilhar este post


Link para o post
Compartilhar em outros sites

No number_format você pode colcoar quantas casas decimais você quer... no seu caso 2

 

 

 

<?php
$valor = "4000";
echo number_format($valor,2);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

// TRANSFORMA MOEDA
function transformaMoeda($valor){
$novoValor = number_format($valor/100,2,",",".");
return $novoValor;		
}

$foo = 4000;
echo transformaMoeda($foo);

 

Saida: 40,00

 

Se quiser fazer calculos ou voltar o valor pro BD use

 

// TIRA OS PONTOS E VIRGULAS DE UM NUMERO
function tiraMoeda($valor){
$novoValor = preg_replace("/[^0-9\s]/", "", $valor);
return $novoValor;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deve ter outra forma melhor de fazer e ainda colocar os pontos no milhar. Ex: R$ 1.000,00 em vez de R$ 1000,00

Mas a que fiz foi essa por enquanto.


function transformaReais($var){

// Insere ',' em 2 casas antes do fim //
$fase1 = substr_replace($var, ',', -2, 0) . "<br />\n";

// Insere R$ no começo e continua igual //
$fase2 = substr_replace($fase1, 'R$ ', 0, 0) . "<br />\n";

return $fase2;

}


$numero = '1234500';

echo transformaReais($numero); 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deve ter outra forma melhor de fazer e ainda colocar os pontos no milhar. Ex: R$ 1.000,00 em vez de R$ 1000,00

Mas a que fiz foi essa por enquanto.

 

Tem razão, fiz uma gambiarra que funciona, mas deve ter jeito melhor de fazer isso

 



function moeda($valor){
  $valor =  number_format($valor/100,2);
  str_replace(',','%',$valor);
  str_replace('.',',',$valor);
  return str_replace('%','.',$valor);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou legal Rafael

 

 

Mas vou por uma alteração da função aqui

function moeda($valor){
  $valor =  number_format($valor/100,2,",",".");
  str_replace(',','%',$valor);
  str_replace('.',',',$valor);
  return str_replace('%','.',$valor);
}

 

Input: 1

Retorno: 0,01

 

Input: 100

Retorno: 1,00

 

Input: 1000

Retorno: 10,00

 

Input: 10000

Retorno: 100,00

 

Input: 100000

Retorno: 1.000,00

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.