PHP Float mit 2 Dezimalstellen: .00

Lesezeit: 3 Minuten

PHP Float mit 2 Dezimalstellen 00
StackOverflowNeuling

Wenn ich diese Typumwandlung mache:

(float) '0.00';

Ich bekomme 0. Wie komme ich 0.00 und haben immer noch den Datentyp als Float?

PHP Float mit 2 Dezimalstellen 00
Denys Séguret

Ein Schwimmer hat nicht 0 oder 0.00 : das sind andere Zeichenfolge Darstellungen des internen (IEEE754) Binärformat, aber der Float ist derselbe.

Wenn Sie Ihren Float als “0,00” ausdrücken möchten, müssen Sie ihn in einer Zeichenfolge formatieren, indem Sie verwenden Zahlenformat :

$numberAsString = number_format($numberAsFloat, 2);

  • Ich wollte keine Schnur. Wollte einen Schwimmer. Aber da es anscheinend nicht gültig ist, 0.00 zu haben, muss ich mich mit “0.00” oder 0 begnügen.

    – StackOverflowNeuling

    5. Oktober 2012 um 17:05 Uhr

  • Wir können den Float-Datentyp nach der Formatierung nicht beibehalten. Also keine gültige Antwort gemäß der Frage.

    – Älterer PHP-Entwickler

    1. Januar 2020 um 7:32 Uhr


Soweit ich weiß, gibt es keine Lösung für PHP, um dies zu beheben. Alle anderen (oben und unten) Antworten in diesem Thread sind Unsinn.

Die Funktion number_format gibt als Ergebnis einen String zurück, wie er in der eigenen Spezifikation von PHP.net geschrieben ist.

Funktionen wie floatval/doubleval geben ganze Zahlen zurück, wenn Sie als Wert 3.00 angeben.

Wenn Sie Typjonglieren, erhalten Sie als Ergebnis eine ganze Zahl.

Wenn Sie round() verwenden, erhalten Sie als Ergebnis eine ganze Zahl.

Die einzig mögliche Lösung, die mir einfällt, ist die Verwendung Ihrer Datenbank für die Typkonvertierung in Float. MySQL zum Beispiel:

SELECT CAST('3.00' AS DECIMAL) AS realFloatValue;

Führen Sie dies mit einer Abstraktionsschicht aus, die Floats anstelle von Zeichenfolgen zurückgibt, und los geht’s.

Änderung der JSON-Ausgabe

Wenn Sie nach einer Lösung suchen, um Ihre JSON-Ausgabe so zu reparieren, dass sie 2 Dezimalstellen enthält, können Sie wahrscheinlich die Postformatierung wie im folgenden Code verwenden:

// PHP AJAX Controller

// some code here

// transform to json and then convert string to float with 2 decimals
$output = array('x' => 'y', 'price' => '0.00');
$json = json_encode($output);
$json = str_replace('"price":"'.$output['price'].'"', '"price":'.$output['price'].'', $json);

// output to browser / client
print $json;
exit();

Rückgabe an Client/Browser:

{"x":"y","price":0.00}

  • Danke für den Hinweis auf json, wenn Sie sicher nur mit Zahlen arbeiten und keine enthalten " Zeichen, also nach Gebrauch number_format und json-Codierung, kann es einfach verwenden: $json = str_replace('"', '', $json);

    – Nabi KAZ

    17. November 2017 um 19:32 Uhr


  • Aber dann darf Ihr Schlüssel keine Leerzeichen enthalten, sonst wird Ihre Ausgabe nicht validiert. Manche Leute schon 😉

    – Timo B.

    20. November 2017 um 8:54 Uhr

0.00 ist eigentlich 0. Wenn Sie beim Echo die 0.00 benötigen, verwenden Sie einfach Zahlenformat Hier entlang:

number_format($number, 2);

  • Beim Konvertieren in JSON wird der Datentyp string erstellt

    – Vipul Hadija

    14. Juli 2021 um 9:20 Uhr

Sie können Gleitkommazahlen anzeigen

  • mit einer bestimmten Anzahl von Dezimalstellen
  • mit einem bestimmten Format (lokalisiert)

dh

$myNonFormatedFloat = 5678.9

$myGermanNumber = number_format($myNonFormatedFloat, 2, ',', '.'); // -> 5.678,90

$myAngloSaxonianNumber = number_format($myNonFormatedFloat, 2, '.', ','); // -> 5,678.90 

Notiere dass der

Das erste Argument ist die Gleitkommazahl, die Sie formatieren möchten

2. Argument ist die Anzahl der Dezimalstellen

Das dritte Argument ist das Zeichen, das verwendet wird, um die Dezimalstellen visuell zu trennen

Das vierte Argument ist das Zeichen, das verwendet wird, um Tausende visuell zu trennen

PHP Float mit 2 Dezimalstellen 00
Bart Friedrichs

Verwenden Sie die number_format() Funktion, um zu ändern, wie eine Zahl angezeigt wird. Es wird a zurückgegeben stringwird der Typ der ursprünglichen Variablen nicht beeinflusst.

1647183849 867 PHP Float mit 2 Dezimalstellen 00
Amrish Prajapati

Sie können dies versuchen, es wird für Sie funktionieren

number_format(0.00, 2)

1647183849 135 PHP Float mit 2 Dezimalstellen 00
Waruna Manjula

Versuche dies

$nom="5695.5";
number_format((float)($nom), 2, '.', ','); // -> 5,695.50

$nom="5695.5215";
number_format((float)($nom), 2, '.', ','); // -> 5,695.52

$nom="5695.12";
number_format((float)($nom), 0, '.', ','); // -> 5,695

998180cookie-checkPHP Float mit 2 Dezimalstellen: .00

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy