Donnerstag, April 9, 2020

Wie konvertiert man String in Float in JavaScript?

Ich versuche zu analysieren, zwei Werte aus einer datagrid.
Die Felder sind numerisch, und wenn Sie ein Komma (ex. 554,20), ich kann nicht die zahlen nach dem Komma.
Ich habe versucht parseInt und parseFloat. Wie kann ich dies tun?

Kommentare dem Thema

InformationsquelleAutor der Frage | 2009-03-13

7 Kommentare

  1. 292

    Wenn Sie gemeint sind zu werden separate Werte, versuchen Sie dies:

    var values = "554,20".split(",")
    var v1 = parseFloat(values[0])
    var v2 = parseFloat(values[1])

    Wenn Sie gemeint sind zu sein, ein einzelner Wert (wie im französischen, wo die Hälfte ist geschrieben 0,5)

    var value = parseFloat("554,20".replace(",", "."));

    InformationsquelleAutor der Antwort Jesse Rusak

  2. 41

    Haben Sie jemals versucht, dies zu tun? :p

    var str = '3.8';ie
    alert( +(str) + 0.2 );

    +(string) – cast von string zu float.

    Praktisch!

    So, um Ihr problem zu lösen, können Sie etwas wie das hier tun:

    var floatValue = +(str.replace(/,/,'.'));

    InformationsquelleAutor der Antwort Stev

  3. 27

    Ersetzen Sie das Komma mit einem Punkt.

    Diese werden erst zurückkehren, 554:

    var value = parseFloat("554,20")

    Zurückkehren 554.20:

    var value = parseFloat("554.20")

    So dass am Ende, können Sie einfach verwenden:

    var fValue = parseFloat(document.getElementById("textfield").value.replace(",","."))

    Vergessen Sie nicht, dass parseInt() sollte nur verwendet werden, um zu analysieren, ganze zahlen (keine schwimmende Punkte). In deinem Fall wird es nur zurückgeben, 554. Darüber hinaus Aufruf von parseInt() in eine float wird nicht um die Anzahl: es wird seinen Boden (nächste kleinere ganze Zahl).


    Erweitertes Beispiel zu beantworten, Pedro Ferreira Frage aus den Kommentaren:

    Wenn das textfield-Objekt enthält Tausendertrennzeichen Punkte wie in 1.234.567,99 diese beseitigt werden könnten, vorher mit einem anderen replace:

    var fValue = parseFloat(document.getElementById("textfield").value.replace(/\./g,"").replace(",","."))

    InformationsquelleAutor der Antwort Wadih M.

  4. 13

    Wenn Sie erweitern das String-Objekt wie diese..

    String.prototype.float = function() { 
      return parseFloat(this.replace(',', '.')); 
    }

    .. Sie können es ausführen, wie diese

    "554,20".float()
    > 554.20

    arbeitet mit Punkt als auch

    "554.20".float()
    > 554.20
    
    typeof "554,20".float()
    > "number"

    InformationsquelleAutor der Antwort sobi3ch

  5. 3

    @GusDeCool oder jemand anderes versuchen zu ersetzen, mehr als ein Tausendertrennzeichen, eine Weise zu tun, es ist ein regex-globales ersetzen: /foo/g. Denken Sie daran, dass . ist ein Metazeichen, so dass Sie haben, um es zu entkommen, oder legen Sie Sie in eckige Klammern (\. oder [.]). Hier ist eine option:

    var str = '6.000.000';
    str.replace(/[.]/g,",");

    InformationsquelleAutor der Antwort Nick Benes

  6. 3

    Können Sie diese Funktion verwenden. Es wird ersetzen Sie die Kommas mit “ und dann wird es parseFlaot den Wert und danach wird es wieder passen Sie die Kommas an Wert.

    function convertToFloat(val) {
            if (val != '') {
                if (val.indexOf(',') !== -1)
                    val.replace(',', '');
                val = parseFloat(val);
                while (/(\d+)(\d{3})/.test(val.toString())) {
                    val = val.toString().replace(/(\d+)(\d{3})/, '$1' + ',' + '$2');
                }
            }
            return val;
        }

    InformationsquelleAutor der Antwort Muhammad Bilal

Kostenlose Online-Tests