Ich versuche einen schnellen Weg zu finden, um solche zero decimals
Zahlenwerte zu entfernen :
echo cleanNumber('125.00');
// 125
echo cleanNumber('966.70');
// 966.7
echo cleanNumber(844.011);
// 844.011
Gibt es eine optimierte Möglichkeit, dies zu tun?
Antworten:
$num + 0
macht den Trick.Intern entspricht dies dem Gießen zum Schweben
(float)$num
oderfloatval($num)
aber ich finde es einfacher.quelle
floatval()
es tut.floatval
Verhalten von @ESCOBAR gibt einen Float zurück. Ich würde argumentieren, dass die Verwendung als Dezimalformatierer auch nicht sehr offensichtlich oder sauber ist.//COMMENT
Sie könnten einfach die
floatval
Funktion verwendenquelle
Das benutze ich:
Hinweis: Dies setzt
.
das Dezimaltrennzeichen voraus . Es hat den Vorteil, dass es mit beliebig großen (oder kleinen) Zahlen funktioniert, da es keinen Float Cast gibt. Es werden auch keine Zahlen in wissenschaftliche Notation umgewandelt (z. B. 1.0E-17).quelle
Durch einfaches Hinzufügen
+
zu Ihrer Zeichenfolgenvariablen wird typecast (float) ausgeführt und Nullen entfernt:quelle
Für alle, die auf diese Site kommen und stattdessen das gleiche Problem mit Kommas haben, ändern Sie Folgendes:
zu:
Wenn zwei Nullen entfernt werden müssen, wechseln Sie zu:
Mehr hier: PHP-Nummer: Dezimalpunkt nur bei Bedarf sichtbar
quelle
Wenn Sie die Nullstellen kurz zuvor entfernen möchten, um sie auf der Seite oder Vorlage anzuzeigen.
Sie können die Funktion sprintf () verwenden
quelle
Sie sollten Ihre Zahlen als Floats ausgeben, was dies für Sie erledigt.
Die Ausgabe davon wird das sein, wonach Sie suchen.
quelle
(float)'0.1234567890124567890123456789'
wird0.12345678901246
.Es gibt nichts, was mit einem einfachen regulären Ausdruck nicht behoben werden kann;)
http://xkcd.com/208/
quelle
0
s wie in"100"
. Kann auch nicht0
s abstreifen"100.010"
.$x = preg_replace("/(\.0*$)|((?<=\.\d*)0+$)/",'',$x);
Typecast zu a
float
.quelle
Aufgrund dieser Frage ist alt. Erstens tut mir das leid.
Die Frage bezieht sich auf die Zahl xxx.xx, aber falls es sich um x, xxx.xxxxx oder ein Differenz-Dezimaltrennzeichen wie xxxx, xxxx handelt, kann es schwieriger sein, Nullstellen vom Dezimalwert zu finden und zu entfernen.
Und hier ist der Code zum Testen.
quelle
Seien Sie vorsichtig beim Hinzufügen von +0.
Ergebnis ist 1.
quelle
Seltsam, wenn ich eine Nummer aus der Datenbank mit dem Typ "float" bekomme und wenn meine Nummer ex ist. 10000 wenn ich es schwebe, wird es 1.
Ich habe alle oben genannten Lösungen getestet, aber nicht funktioniert.
quelle
quelle
Komplizierter Weg, funktioniert aber:
Die oben genannten Lösungen sind der optimale Weg, aber falls Sie Ihre eigenen haben möchten, können Sie diese verwenden. Was dieser Algorithmus tut, beginnt am Ende der Zeichenfolge und prüft, ob seine 0 ist. Wenn dies der Fall ist, wird die Zeichenfolge auf leer gesetzt und geht dann von hinten zum nächsten Zeichen, bis das letzte Zeichen > 0 ist
quelle
Sie können verwenden:
quelle
Das ist meine kleine Lösung ... Kann in eine Klasse aufgenommen werden und vars setzen
private $ dsepparator = '.'; // Dezimalstellen private $ tsepparator = ','; // tausend
Dies kann vom Konstruktor festgelegt und in Benutzer lang geändert werden.
quelle
Das ist meine Lösung. Ich möchte die Möglichkeit behalten, Tausende Trennzeichen hinzuzufügen
quelle
Dies ist eine einfache einzeilige Funktion mit rtrim, Save Separator und Dezimalpunkt:
quelle
Ich fand diese Lösung die beste:
quelle
Einfach und genau!
quelle
Ultimative Lösung: Der einzig sichere Weg ist die Verwendung von Regex:
es wird auf jeden Fall funktionieren
quelle
Das Folgende ist viel einfacher
quelle
quelle
Dieser Code entfernt Null nach Punkt und gibt nur zwei Dezimalstellen zurück.
$ number = 1200.0000;
str_replace ('. 00', '', number_format ($ number, 2, '.', ''));
Die Ausgabe wird sein: 1200
quelle