Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problema com valor em Real


marceloths

Pergunta

Estou com um pequeno problema para exibir o valor em Real no PHP,

Tenho as duas variáveis $preço e $parcela com seguintes valores: 100.99 e 10

Quando eu utilizo o codigo abaixo:

$preço = 100.99;
$parcela = 10;
$parcelado = ($preço / $parcela);
echo 'R$' . $parcelado; // mostra o valor R$10.099 e não R$10.09

Gostaria que mostrasse o valor parcelado como R$10.09.

Como formatar o valor da moeda em PHP?

Tenho uma outra dúvida, quando armazeno o valor 10.00 no banco de dados MySQL armazena somente o 10, mas consigo armazenar o valor 10.01 no banco de dados, porque não armazenar o valor 10.00 no MySQL.

Atenciosamente,

Marcelo.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Estou com um pequeno problema para exibir o valor em Real no PHP,

Tenho as duas variáveis $preço e $parcela com seguintes valores: 100.99 e 10

Quando eu utilizo o codigo abaixo:

$preço = 100.99;
$parcela = 10;
$parcelado = ($preço / $parcela);
echo 'R$' . $parcelado; // mostra o valor R$10.099 e não R$10.09
Gostaria que mostrasse o valor parcelado como R$10.09. Como formatar o valor da moeda em PHP?
Hey Marcelo, tenta assim:
/**
 * Converte um número em ponto flutuante para a representação monetária segundo o padrão brasileiro
 *
 * @param float $float O valor que será convertido
 * @param integer $dec O número de casas decimais
 * @param boolean $round Define se o valor será arredondado ou se será apenas cortado
 * @param string $dec_sep O separador de casas decimais
 * @param string $mil_sep O separador de milhares
 * @return string O valor convertido
 */
function brReal( $float , $dec = 2 , $round = false , $dec_sep = "," , $mil_sep = "." ){
    if ( $round ){
        if ( ( $float = round( $float * pow( 10 , $dec ) ) ) )
            $float /= pow( 10 , $dec );
    }

    $str = (string) $float;
    $mtc = array();

    if ( preg_match( "/([0-9]+)(?:\.){1}([0-9]+)?/" , $str , $mtc ) ){
        $str = sprintf( "%d.%s" , $mtc[ 1 ] , substr( $mtc[ 2 ] , 0 , $dec ) );
    }

    return( sprintf( "R\$ %s" , number_format( $str , $dec , $dec_sep , $mil_sep ) ) );
}

$num = 100.99;
$par = 10;
$fim = $num / $par;

echo brReal( $fim ); //R$ 10,09
echo brReal( $fim , 3 ); //R$ 10,099
echo brReal( $fim , 2 , true ); //R$ 10,10
echo brReal( 1000000.99 / 10 , 2 ); //R$ 100.000,09
echo brReal( 1000000.99 / 10 , 2 , false , "." , "'" ); //R$ 100'000.09
echo brReal( 1000000.99 / 10 , 2 , false , "." , "" ); //R$ 100000.09

[]'s

J. Neto

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...