Frage
Wie aufgeteilt ich eine Reihe von dem Komma in php?
Ich habe $ num bekam = 15/4; die $ num in 3,75 verwandelt. Ich möchte die 3 und die 75 Teile aufzuschlüsseln, so $ int = 3 und $ dez = 75. Mein Nicht-Arbeitscode lautet:
$num = 15/4; // or $num = 3.75;
list($int, $dec) = split('.', $num);
, aber das führt zu leeren $ int und $ Dezember
Vielen Dank im Voraus.
Lösung
Wenn Sie die Dezimaldarstellung der Zahl explode
, verlieren Sie Präzision. Wenn Sie nichts dagegen haben, so sei es (das ist ok für Textdarstellung). Nehmen Sie die locale beachten! Wir Belgier verwenden Sie ein Komma (zumindest die nicht-Programmierung Einsen:).
Wenn Sie tun Geist (für Berechnungen zum Beispiel), können Sie die floor
-Funktion:
$num = 15/4
$intpart = floor( $num ) // results in 3
$fraction = $num - $intpart // results in 0.75
Hinweis: Dies ist für positive Zahlen. Für negative Zahlen können Sie das Vorzeichen umkehren, verwenden Sie den positiven Ansatz und reinvert das Zeichen des int Teil.
Andere Tipps
Versuchen Sie explodieren
list($int,$dec)=explode('.', $num);
, da Sie nicht wirklich brauchen, einen regulären Ausdruck zu verwenden, basierte Split. Split wurde für Sie als nicht funktioniert ‚‘ Charakter zu entkommen müßte eine wörtliche Übereinstimmung zu liefern.
$num = 15/4; // or $num = 3.75;
list($int, $dec) = explode('.', $num);
$int = $num > 0 ? floor($num) : ceil($num);
$dec = $num - $int;
Wenn Sie $dec
positiv sein, wenn $num
negativ ist (wie die anderen Antworten) Sie tun können:
$dec = abs($num - $int);
$num = 3.75;
$fraction = $num - (int) $num;
$num = 15/4;
substr(strrchr($num, "."), 1)
Für den Fall, wenn Sie nicht wollen, Präzision zu verlieren, können Sie diese verwenden:
$number = 10.10;
$number = number_format($number, 2, ".", ",");
sscanf($number, '%d.%d', $whole, $fraction);
// you will get $whole = 10, $fraction = 10
Dies funktioniert für positive und negative Zahlen:
$num = 5.7;
$whole = (int) $num; // 5
$frac = $num - (int) $num; // .7