Ir para conteúdo

POWERED BY:

Arquivado

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

fmda

[Resolvido] Number_format

Recommended Posts

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

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

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

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

@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

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

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

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

×

Informação importante

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