jQuery Berechnung NaN
Habe ich eine Ansicht, output-decimal-Werten, die Geld Datentypen in der Datenbank. Zur Ausgabe verwende ich den folgenden code zur Formatierung
string price = String.Format("{0:f}", (item.Price + item.VAT));
produzieren, die eine Zeichenfolge wie diese
12,99 (with comma as the decimal separator)
Bin ich nun mit diesem string zu machen, einige Berechnungen auf den client mit jQuery
elmProductSelected.children("option").each(function(n) {
var pIdx = $(this).attr("rel");
var pObj = products.eq(pIdx);
var pValue = $(this).attr("value");
var valueArray = pValue.split('|');
var prdId = valueArray[0];
var pQty = valueArray[1];
/* the value of pPrice is 12,99 after the following call */
var pPrice = $(pObj).attr(attrProductPrice);
/* I get NaN here! */
sTotal = sTotal + ((pPrice - 0) * (pQty - 0));
cProductCount++;
cItemCount = cItemCount + (pQty-0);
});
Ich bin immer NaN rechts auf die Linie, die ich kommentiert habe. Ich nehme an, dass dies aufgrund der Tatsache, dass die pPrice
Wert verwenden Sie das Komma als Dezimaltrennzeichen, weil wenn ich manuell legen Sie es als 12.99
alles funktioniert.
Gibt es eine Möglichkeit, Lesen Sie die 12,99
als Zahl mit javascript/jQuery?
InformationsquelleAutor Lorenzo | 2010-12-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
NaN = not a number
Mithilfe
parseInt
man kann sagen, dass Javascript es sollte behandelt werden wie eine Nummer.Müssen Sie möglicherweise
parseFloat
wenn Sie eine Dezimalzahl.parseInt
undparseFloat
verlieren Sie die Nachkommastellen, da der,
. Beispiel. Sie müssen, um das Komma der ersten.Sie sollten stets mit den radix-parameter mit parseInt. parseInt('0012') -> 10, parseInt('0012', 10) -> 12.
InformationsquelleAutor Webnet
Gibt es zwei Probleme mit dem code. Zunächst sollten Sie cast string to float, so Webnet schlägt. Die parseFloat Funktion, jedoch, erwarten, dass Sie das argument benutzen, Punkt als dezimal-Trennzeichen. Daher wird der folgende code tun, was Sie wollen:
Erste, ersetzen Sie das Komma als Punkt, dann konvertieren Sie das Ergebnis in einen float.
InformationsquelleAutor VoY
Wenn das ist das einzige Komma-Trennzeichen gibt es (keine Tausender-Trennzeichen), dann einfach ersetzen Sie es.
Wenn es andere Zeichen, die verhindern, dass die korrekte Parsen, dann würde ich vorschlagen, dass ein benutzerdefiniertes Attribut, das speichert die stramme Nummer.
Können Sie
data()
wie diese, umdata-
Attribute wenn Sie mitjQuery 1.4.3
oder später.Sehr wahrscheinlich. Ich habe es bereits im code Kommentar. Das war nicht der wichtigste Punkt für die Antwort, aber erwähnenswert.
InformationsquelleAutor user113716
versuchen, diese
InformationsquelleAutor Frizi
Versuchen, diese RegEx:
Update: Geändert, der Ausdruck, da verpasste ich den Teil(mit Komma als dezimal-Trennzeichen).
InformationsquelleAutor Chandu
Sieht dies im Zusammenhang: Wie konvertieren von string in float in javascript?
Wie es aussieht, haben Sie zu ersetzen das Komma durch einen Dezimalwert.
parseFloat('12,99'.ersetzen(',', '.'))
InformationsquelleAutor keegan3d