Diviser un nombre par un point décimal en php
Question
Comment diviser un nombre par le point décimal en php?
J'ai $ num = 15/4; ce qui transforme $ num en 3,75. Je souhaite séparer les 3 et les 75 parties, donc $ int = 3 et $ dec = 75. Mon code non fonctionnel est:
$num = 15/4; // or $num = 3.75;
list($int, $dec) = split('.', $num);
mais cela donne vide $ int et $ dec.
Merci d'avance.
La solution
Si vous explosez
la représentation décimale du nombre, vous perdez en précision. Si cela ne vous dérange pas, qu’il en soit ainsi (c’est bien pour la représentation textuelle). Prendre la locale en compte! Nous, Belges, utilisons une virgule (au moins les virgules non programmées:).
Si vous faites l’esprit (pour des calculs, par exemple), vous pouvez utiliser la fonction étage
:
$num = 15/4
$intpart = floor( $num ) // results in 3
$fraction = $num - $intpart // results in 0.75
Remarque: ceci concerne les nombres positifs. Pour les nombres négatifs, vous pouvez inverser le signe, utiliser l’approche positive et inverser le signe de la partie int.
Autres conseils
$num = 15/4; // or $num = 3.75;
list($int, $dec) = explode('.', $num);
$int = $num > 0 ? floor($num) : ceil($num);
$dec = $num - $int;
Si vous voulez que $ dec
soit positif lorsque $ num
est négatif (comme les autres réponses), vous pouvez le faire:
$dec = abs($num - $int);
$num = 3.75;
$fraction = $num - (int) $num;
$num = 15/4;
substr(strrchr($num, "."), 1)
Si vous ne voulez pas perdre en précision, vous pouvez utiliser ces méthodes:
$number = 10.10;
$number = number_format($number, 2, ".", ",");
sscanf($number, '%d.%d', $whole, $fraction);
// you will get $whole = 10, $fraction = 10
Ceci fonctionne pour les nombres positifs ET négatifs:
$num = 5.7;
$whole = (int) $num; // 5
$frac = $num - (int) $num; // .7