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.

Était-ce utile?

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

Essayez exploser

list($int,$dec)=explode('.', $num);

car vous n’avez pas vraiment besoin d’utiliser un split basé sur regex. Split ne fonctionnait pas pour vous en tant que '.' caractère aurait besoin de s'échapper pour fournir une correspondance littérale.

$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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top