number_format()
Erklärung der PHP-Funktion number_format() zum Formatieren von Zahlen mit Tausendertrennzeichen und Dezimalstellen.
Die PHP-Funktion number_format() formatiert eine Zahl mit gruppierten Tausenderstellen und einer optionalen festen Anzahl von Dezimalstellen. Sie gibt einen string zurück, was sie zur bevorzugten Funktion für die Anzeige von Preisen, Statistiken und allen Zahlen macht, die ein Mensch lesen soll. Sie dient rein der Darstellung: Sie ändert den zugrunde liegenden Wert nicht, sondern nur dessen Ausgabe.
Dieses Kapitel behandelt die Syntax, alle Parameter, die Funktionsweise der Rundung und häufige Fallstricke, auf die man achten sollte.
Syntax
number_format(float $number, int $decimals = 0, string $decimal_separator = ".", string $thousands_separator = ",") : stringParameter
| Parameter | Beschreibung |
|---|---|
$number | Die zu formatierende Zahl. Dies ist das einzige Pflichtargument. |
$decimals | Wie viele Stellen nach dem Dezimalpunkt angezeigt werden sollen. Standardmäßig 0. |
$decimal_separator | Das Zeichen, das als Dezimalpunkt verwendet wird. Standardmäßig ".". |
$thousands_separator | Das Zeichen zum Trennen von Tausendergruppen. Standardmäßig ",". |
Die Funktion gibt immer einen string zurück, sodass die Ausgabe direkt ausgegeben oder verkettet werden kann, aber nicht für weitere arithmetische Operationen verwendet werden sollte.
Einfaches Beispiel
Wird nur die Zahl übergeben, rundet number_format() auf eine ganze Zahl und fügt Kommas zwischen den Tausenderstellen ein:
Ausgabe:
1,235Der Nachkommaanteil .56 bewirkte, dass der Wert auf 1235 aufgerundet wurde, und ein Komma wurde zwischen den Tausenderstellen eingefügt.
Dezimalstellen steuern
Übergeben Sie ein zweites Argument, um eine feste Anzahl von Dezimalstellen beizubehalten. Das ist es, was man für Geldbeträge fast immer möchte:
<?php
echo number_format(1234.567, 2); // two decimal places
?>Ausgabe:
1,234.57Die dritte Dezimalstelle (7) wird auf die zweite Stelle gerundet. Beachten Sie, dass die Anzahl der Dezimalstellen auch dann fest ist, wenn der ursprüngliche Wert weniger Stellen hat — number_format(5, 2) gibt "5.00" zurück.
Benutzerdefinierte Trennzeichen (internationale Formate)
Das dritte und vierte Argument ermöglichen den Wechsel der Trennzeichen. Viele europäische Gebietsschemas verwenden einen Punkt für Tausender und ein Komma für den Dezimalpunkt:
<?php
$amount = 1234567.891;
echo number_format($amount, 2, ".", ",") . "\n"; // US / UK style
echo number_format($amount, 2, ",", ".") . "\n"; // German / Spanish style
echo number_format($amount, 2, ".", " "); // space-grouped
?>Ausgabe:
1,234,567.89
1.234.567,89
1 234 567.89Um die Tausendertrennung vollständig zu entfernen, übergibt man einen leeren string als viertes Argument:
<?php
echo number_format(1234567.891, 2, ".", "");
?>Ausgabe:
1234567.89Funktionsweise der Rundung
number_format() rundet den Wert auf die gewünschte Genauigkeit nach dem Prinzip Runden weg von null — derselbe Standard wie bei der Funktion round(). Ein abschließendes .5 wird dem Betrag nach aufgerundet:
<?php
echo number_format(2.5) . "\n"; // 3
echo number_format(0.5) . "\n"; // 1
echo number_format(-9.5); // -10
?>Ausgabe:
3
1
-10Häufige Fallstricke
- Das Ergebnis ist ein string, keine Zahl. Das Hinzufügen des Tausendertrennzeichens bedeutet, dass
"1,235" + 1nicht wie Arithmetik funktioniert. Wenn Sie weiter mit dem Wert rechnen müssen, formatieren Sie ihn erst in dem Moment, in dem Sie ihn anzeigen. Um Benutzereingaben, die Trennzeichen enthalten, wieder in eine Zahl umzuwandeln, verwenden Siefloatval()nachdem Sie die Gruppenzeichen entfernt haben. - Es wird gerundet, nicht abgeschnitten.
number_format(9.999, 2)gibt"10.00"zurück, nicht"9.99". Für Währungsberechnungen sollten Sie Ihre Werte gezielt runden, bevor Sie sie formatieren. - Negative Null kann auftreten. Sehr kleine negative Zahlen können als
-0.00ausgegeben werden. Addieren Sie0zum Wert (oder verwenden Sieabs()bei nahezu null-Werten), wenn Sie das vermeiden möchten. - Für gebietsschemaabhängige Währungsformate (Symbole, Gebietsschema-Regeln, Buchhaltungsformate) sollten Sie statt manueller string-Erstellung PHP's
NumberFormatteraus derintl-Erweiterung in Betracht ziehen.
Verwandte Funktionen
round()— eine Zahl auf eine bestimmte Genauigkeit runden und einen float zurückgeben.sprintf()undprintf()— Zahlen (und andere Werte) mit%-Platzhaltern wie%.2fformatieren.floatval()— einen string wieder in eine Gleitkommazahl umwandeln.- PHP-Mathematikfunktionen — die umfangreichere Sammlung numerischer Hilfsfunktionen.