Ich versuche, zwei Werte aus einem Datagrid zu analysieren. Die Felder sind numerisch, und wenn sie ein Komma haben (z. B. 554,20), kann ich die Zahlen nach dem Komma nicht erhalten. Ich habe es versucht parseInt
und parseFloat
. Wie kann ich das machen?
javascript
parsing
floating-point
Kamil Kiełczewski
quelle
quelle
Antworten:
Wenn es sich um separate Werte handelt, versuchen Sie Folgendes:
Wenn sie ein einzelner Wert sein sollen (wie auf Französisch, wo die Hälfte mit 0,5 geschrieben ist)
quelle
+(string)
anstelle derparseString(string)
von @Stev unten vorgeschlagenen verwenden. Das erste Beispiel wäre alsov1 = +(values[0]); v2 = +(values[1]);
.6.000.000
. Funktion ersetzen nur das erste Komma-Trennzeichen ersetzenHaben Sie jemals versucht, dies zu tun? : p
+ (string) wandelt den String in float um.
Praktisch!
Um Ihr Problem zu lösen, können Sie Folgendes tun:
quelle
+(str)
Lösung gefällt mir sehr gut -parseFloat
ignoriert ungültige Zeichen nach der Nummer und+(str)
kehrtNaN
in diesen Fällen zurück, was genau das ist, was ich brauche.Ersetzen Sie das Komma durch einen Punkt.
Dies gibt nur 554 zurück:
Dies gibt 554,20 zurück:
Am Ende können Sie also einfach Folgendes verwenden:
Vergessen Sie nicht, dass dies
parseInt()
nur zum Parsen von Ganzzahlen (keine Gleitkommazahlen) verwendet werden sollte. In Ihrem Fall wird nur 554 zurückgegeben. Wenn Sie parseInt () auf einem Float aufrufen, wird die Zahl nicht gerundet: Sie nimmt ihren Boden ein (nächste untere Ganzzahl).Erweitertes Beispiel zur Beantwortung der Frage von Pedro Ferreira aus den Kommentaren:
Wenn das Textfeld Tausende Trennpunkte wie in
1.234.567,99
diesen enthält, können diese zuvor mit einem anderen entfernt werdenreplace
:quelle
Wenn Sie das String-Objekt wie folgt erweitern.
.. Sie können es so ausführen
funktioniert auch mit dot
quelle
@GusDeCool oder jeder andere, der versucht, mehr als tausend Trennzeichen zu ersetzen. Eine Möglichkeit, dies zu tun, ist ein globaler Regex-Ersatz :
/foo/g
. Denken Sie daran, dass dies.
ein Metazeichen ist, also müssen Sie ihm entkommen oder in Klammern (\.
oder[.]
) setzen. Hier ist eine Option:quelle
Sie können diese Funktion verwenden. Es ersetzt die Kommas durch '' und parseFlaot den Wert. Danach werden die Kommas erneut angepasst.
quelle
Ich hatte das gleiche Problem, außer dass ich nicht im Voraus wusste, was die Tausendertrennzeichen und das Dezimaltrennzeichen waren. Am Ende schrieb ich eine Bibliothek, um dies zu tun. Wenn Sie es hier interessieren, ist es: https://github.com/GuillaumeLeclerc/number-parsing
quelle
Versuchen
quelle