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.

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top