Was ist der richtige Weg, um eine PHP-Zeichenfolge auf zwei Dezimalstellen zu runden?
$number = "520"; // It's a string from a database
$formatted_number = round_to_2dp($number);
echo $formatted_number;
Die Ausgabe sollte sein 520.00
;
Wie soll die round_to_2dp()
Funktionsdefinition sein?
php
formatting
numbers
rounding
number-formatting
Rich Bradshaw
quelle
quelle
round
ist eine mathematische Funktion, und dies ist nur ein Formatierungsproblem.Antworten:
Sie können number_format () verwenden :
Beispiel:
Diese Funktion gibt eine Zeichenfolge zurück .
quelle
round
löst das Problem des OP hier nicht.round("520", 2)
Gibt den Gleitkommawert zurück520
, und ein Echo, das ihn natürlich nicht auf 2 Dezimalstellen anzeigt. Für den Zweck des OP - eine Ganzzahl mit 2 Dezimalstellen durch Auffüllen mit nachgestellten Nullen anzuzeigen - benötigen Sie eine Zahlenformatierungsfunktion, keine Rundungsfunktion.520,00
stattdessen bekommen müssen520.00
, funktioniert dies einfach.Verwenden Sie
round()
(verwenden Sie, wenn Sie eine Zahl nur im Float-Format erwarten, andernfalls verwenden Sie number_format () als Antwort von Codemwnci ):Aus dem Handbuch:
...
quelle
round($number, 2);
funktioniert nicht. Ich möchte 520.00 nicht 520. Ich kann nicht glauben, dass round das nicht standardmäßig macht.Alternative,
quelle
520,00
? Ich denke, die andere Antwort funktioniert in diesem Fall besser.http://php.net/manual/en/function.round.php
z.B
quelle
Versuchen:
Die Ausgabe wird sein:
quelle
Sie können das PHP
printf
oder diesprintf
Funktionen verwenden:Beispiel mit
sprintf
:Sie können das gleiche auch ohne ausführen
echo
. Beispiel:sprintf("%.3f", $num);
Ausgabe:
Alternativ mit
printf
:Ausgabe:
quelle
Eine andere exotischere Möglichkeit, dieses Problem zu lösen, besteht darin,
bcadd()
einen Dummy-Wert für den $ right_operand von zu verwenden0
.quelle
bc*
Funktionen nicht aufgerundet werden, sondern immer abgerundet werden. Beispielsweisebcadd("1.0999","0.0",1)
ergibt sich "1,0", nicht "1,1".$scale
Bruchstellen. Dies entspricht einer Rundung gegen Null.Verwenden Sie die Funktion PHP number_format () .
Zum Beispiel,
Die Ausgabe wird sein:
quelle
Verwenden Sie die Funktion PHP number_format () .
quelle
round_to_2dp
ist eine benutzerdefinierte Funktion, und nichts kann getan werden, wenn Sie die Deklaration dieser Funktion veröffentlicht haben.Meine Vermutung lautet jedoch:
number_format($number, 2);
quelle
round_to_2dp($number);
war als Pseudocode gemeint; Das OP bat jemanden, ihm zu sagen, durch was dieser Ausdruck ersetzt werden sollte.Dies zeigt genau zwei Stellen nach dem Dezimalpunkt an.
Vorteil:
Wenn Sie zwei Ziffern nur nach einem Gleitkommawert und nicht nach int anzeigen möchten, verwenden Sie diese Option.
quelle
Die Rundung rundet die Zahl korrekt und der Sprint erzwingt sie auf 2 Dezimalstellen, wenn sie nach der Rundung zufällig nur 1 Dezimalstelle beträgt.
quelle
Es wird 5,98 zurückgegeben, ohne die Zahl zu runden.
quelle
floor($retailPrice * 100) / 100;
kein Zahlenformat mehr benötigen.Zur bedingten Abrundung dh. Zeige Dezimalstelle, wo es wirklich benötigt wird, sonst ganze Zahl
123,56 => 12,56
123,00 => 123
quelle
Ich mache meine eigenen.
quelle
Hier bekomme ich zwei Dezimalstellen nach dem
.
(Punkt) mit einer Funktion ...Ergebnisse der obigen Funktion:
Neue richtige Antwort
Verwenden Sie die native PHP-Funktion bcdiv
quelle
Dies gibt Ihnen 2 Zahlen nach der Dezimalstelle.
quelle
Wenn Sie in Ihrem gesamten Projekt zwei Dezimalstellen verwenden möchten, können Sie Folgendes definieren:
Dann erzeugt die folgende Funktion das gewünschte Ergebnis:
Wenn Sie die Funktion bcscale jedoch nicht verwenden, müssen Sie den Code wie folgt schreiben, um das gewünschte Ergebnis zu erzielen.
Mehr wissen
BC Math Funktionen
bcscale
quelle
Nummer ohne Runde
quelle
Hier ist eine andere Lösung mit strtok und str_pad :
quelle
Hinzufügen zu anderen Antworten, da number_format () standardmäßig ein Tausendertrennzeichen hinzufügt.
Um dies zu entfernen, gehen Sie folgendermaßen vor:
quelle
Beispiele
quelle
Sie können die PHP- Funktion round () verwenden.
quelle