Dividir um número por ponto decimal em php
Pergunta
Como faço para dividir um número por ponto decimal em php?
Eu tenho $ num = 15/4; que transforma $ num para 3,75. Eu gostaria de dividir as 3 e as 75 partes, de modo $ int = 3 e US $ dezembro = 75. Meu código não-trabalho é:
$num = 15/4; // or $num = 3.75;
list($int, $dec) = split('.', $num);
mas que resulta em $ int vazio e $ dezembro
Agradecemos antecipadamente.
Solução
Se você explode
a representação decimal do número, você perde precisão. Se você não se importa, que assim seja (que é ok para a representação textual). Tome o local em conta! Nós, belgas use uma vírgula (pelo menos os não-programação:)
Se você do mente (para computações por exemplo), você pode usar a função floor
:
$num = 15/4
$intpart = floor( $num ) // results in 3
$fraction = $num - $intpart // results in 0.75
Nota: este é para números positivos. Para números negativos você pode inverter o sinal, use a abordagem positiva e reinverter o sinal da parte int.
Outras dicas
$num = 15/4; // or $num = 3.75;
list($int, $dec) = explode('.', $num);
$int = $num > 0 ? floor($num) : ceil($num);
$dec = $num - $int;
Se você quiser $dec
a ser positivo quando $num
é negativo (como as outras respostas), você pode fazer:
$dec = abs($num - $int);
$num = 3.75;
$fraction = $num - (int) $num;
$num = 15/4;
substr(strrchr($num, "."), 1)
No caso quando você não quer perder precisão, você pode usar estes:
$number = 10.10;
$number = number_format($number, 2, ".", ",");
sscanf($number, '%d.%d', $whole, $fraction);
// you will get $whole = 10, $fraction = 10
Isso funciona para números positivos e negativos:
$num = 5.7;
$whole = (int) $num; // 5
$frac = $num - (int) $num; // .7