fmda 0 Denunciar post Postado Maio 13, 2010 Alguem poderia me ajudar, seguinte eu tenho uma variavel pra pegar o numero de pontos e a quantidade, com ela eu faço a media, porem queria apenas pegar as casas deciamis e nao o valor, como faço? exemplo: valor: 2,36 desta forma ele pega o 2 <?php echo number_format($media,0);?> como faço pra pegar o 36 (apenas o 36) Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Ribeiro 4 Denunciar post Postado Maio 13, 2010 Utilize o number_format como se fosse trabalhar com valor monterário no formato brasileiro: number_format($number, 2, ',', ' '); Você terá o retorno de 23,40, por exemplo. Faça, então, o explode, para separar o número pela vírgula: $numeroNovo = explode(',', $number); Acesse o múmero que você precisa simplesmente digitando $numeroNovo[1]; Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Maio 13, 2010 <?php $num = 2.36; echo $num - (int) $num; Saída: 0.36 Compartilhar este post Link para o post Compartilhar em outros sites
fmda 0 Denunciar post Postado Maio 13, 2010 mas e pra ficar apenas o 36 sem nada antes e nada depois ? Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Ribeiro 4 Denunciar post Postado Maio 13, 2010 mas e pra ficar apenas o 36 sem nada antes e nada depois ? Como eu disse: $number = 2.36; $number = number_format($number, 2, ',', ''); $number_ = explode(',', $number); echo $number_[1]; Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Maio 13, 2010 Ainda continuo preferindo fazer sem funções, por uma mera questão de desempenho: <?php $num = 2.36; echo ( $num - (int) $num ) * 100; Saída: 36 Apenas para ilustrar: Usando as funções number_format() e explode(): <?php $start = microtime( true ); ob_start(); for ( $i = 0 ; $i < 100000 ; ++$i ){ $number = 2.36; $number = number_format($number, 2, ',', ''); $number_ = explode(',', $number); echo $number_[1]; } ob_end_clean(); var_dump( microtime( true ) - $start ); Tempo: float(1.6257979869843) Usando cálculo, sem funções: $start = microtime( true ); ob_start(); for ( $i = 0 ; $i < 100000 ; ++$i ){ $num = 2.36; echo ( $num - (int) $num ) * 100; } ob_end_clean(); var_dump( microtime( true ) - $start ); Tempo: float(0.77077412605286) Como pode ver, o uso das funções faz com que o tempo seja muito maior. ;) Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Ribeiro 4 Denunciar post Postado Maio 13, 2010 @João, você tem toda a razão (e a rima não foi intencional). Mas pensar em desempenho é pensar em aplicação de médio a grande porte. Pra este caso eu acredito que não seja relevante. Isso quem pode dizer é o autor do tópico. Mas concordo com você. A primeira coisa que me veio à cabeça foi a solução com as funções. Compartilhar este post Link para o post Compartilhar em outros sites
fmda 0 Denunciar post Postado Maio 14, 2010 Obrigado deu certim, vlw ;) Compartilhar este post Link para o post Compartilhar em outros sites
MundiSsa 0 Denunciar post Postado Maio 15, 2010 Olá, Eu estava praticando a função Number_format e consegui e cheguei a um ponto que não consegui resolver utilizando-a. Eu gostaria que no código abaixo o valor em porcentagem apresentado fosse arredondado e reduzido de 85.106382978723% para 85.10% ou 85.11% (talvez ele arredonde pra cima). Segue o código que estava tentando fazer utilizar a função. <?php $produto = 470; $valpago = 400; echo "A porcentagem paga do produto é: " . (($valpago / $produto)*100) , "%" . "<br>"; ?> Aguardo a ajuda de vocês, obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Ribeiro 4 Denunciar post Postado Maio 15, 2010 Simples assim: <?php $produto = 470; $valpago = 400; echo "A porcentagem paga do produto é: " . number_format(($valpago / $produto)*100, '2') , "%" . "<br>"; ?> A função formata o resultado com duas casas após a vírgula. Compartilhar este post Link para o post Compartilhar em outros sites
MundiSsa 0 Denunciar post Postado Maio 15, 2010 Valeu Daniel R. tudo funcionando certinho. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Ribeiro 4 Denunciar post Postado Maio 15, 2010 Certo, mas o importante é entender a utilização da função. A função number_format() recebe vários parâmetros. Sugiro que dê uma estudada para entender melhor seu funcionamento. Compartilhar este post Link para o post Compartilhar em outros sites