Konvertieren Sie eine JavaScript-Zeichenfolgenvariable in Dezimal / Geld


114

Wie können wir eine JavaScript-Zeichenfolgenvariable in eine Dezimalzahl konvertieren?

Gibt es eine Funktion wie:

parseInt(document.getElementById(amtid4).innerHTML)

Antworten:


240

Ja - parseFloat.

parseFloat(document.getElementById(amtid4).innerHTML);

Verwenden Sie zum Formatieren von Zahlen toFixed:

var num = parseFloat(document.getElementById(amtid4).innerHTML).toFixed(2);

num ist jetzt eine Zeichenfolge, deren Zahl mit zwei Dezimalstellen formatiert ist.


1
Können wir diese Variable mit 2 Dezimalstellen wie 120,50 machen? im Moment bekomme ich nur 120,5.
Varada

16
Um @PhilipWhitehouse zu zitieren: "Bitte verwenden Sie für alle, die dies in Zukunft lesen, nicht float, um Währung zu speichern. Sie verlieren an Genauigkeit und Daten. Sie sollten es als ganzzahlige Anzahl von Cent (oder Pennys usw.) speichern und dann vorher umrechnen." ausgeben. ". Quelle: stackoverflow.com/questions/149055/…
SSH Diesen

@SSHThis Soweit mir bekannt ist, hat JavaScript keinen Integer-Typ. Es gibt nur einen Zahlentyp, die alle intern als 64-Bit-Gleitkommazahlen gespeichert sind. Ihr Punkt gilt für andere Sprachen mit ganzzahligen Typen wie C #, C ++, aber nicht wirklich für JavaScript.
Simon Brangwin

1
@ SimonBrangwin Sein Punkt ist immer noch gültig, aber die Semantik kann verwirrend sein. Was er wirklich meint, ist "nur Währung als ganze Zahlen in Javascript speichern, da sie als Gleitkommazahlen gespeichert werden".
Josh Noe

Nur zur Erinnerung: parseFloat('22w')ist 22und parseFloat('w22')istNaN
IG Pascual

65

Sie können auch den NumberKonstruktor / die Funktion verwenden (kein Radix erforderlich und sowohl für Ganzzahlen als auch für Gleitkommazahlen verwendbar):

Number('09'); /=> 9
Number('09.0987'); /=> 9.0987

Alternativ, wie Andy E in den Kommentaren sagte, können Sie +für die Konvertierung verwenden

+'09'; /=> 9
+'09.0987'; /=> 9.0987

Dies wird von IE11
Pants

@Pants, bei dem es um Erweiterungen des in ES6 integrierten Number-Objekts geht , nicht um die VerwendungNumber
KooiInc

11

Das funktioniert:

var num = parseFloat(document.getElementById(amtid4).innerHTML, 10).toFixed(2);


2

Es ist ziemlich riskant, sich auf Javascript-Funktionen zu verlassen, um Zahlen zu vergleichen und damit zu spielen. In Javascript (0.1 + 0.2 == 0.3) wird aufgrund von Rundungsfehlern false zurückgegeben. Verwenden Sie die Bibliothek math.js.


1

Ein einfacher kurzer Weg wäre die Verwendung von + x. Es hält das Vorzeichen sowie die Dezimalzahlen intakt. Die andere Alternative ist die Verwendung von parseFloat (x). Der Unterschied zwischen parseFloat (x) und + x besteht für eine leere Zeichenfolge. + X gibt 0 zurück, wobei parseFloat (x) NaN zurückgibt.


1

Ich habe eine kleine Hilfsfunktion erstellt, um dies zu tun und alle fehlerhaften Daten abzufangen

function convertToPounds(str) { 
    var n = Number.parseFloat(str);
    if(!str || isNaN(n) || n < 0) return 0;
    return n.toFixed(2);
}

Demo ist da

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.