Hier ist ein einfaches Szenario. Ich möchte die Subtraktion von zwei auf meiner Site angezeigten Werten anzeigen:
//Value on my websites HTML is: "75,00"
var fullcost = parseFloat($("#fullcost").text());
//Value on my websites HTML is: "0,03"
var auctioncost = parseFloat($("#auctioncost").text());
alert(fullcost); //Outputs: 75
alert(auctioncost); //Ouputs: 0
Kann mir jemand sagen, was ich falsch mache?
javascript
parsefloat
Nur Bolivianer hier
quelle
quelle
5.200,75
fünftausendzweihundert und fünfundsiebzig bedeutet?parseFloat von javascript akzeptiert keinen Gebietsschema-Parameter. So müssen Sie ersetzen
,
mit.
parseFloat('0,04'.replace(/,/, '.')); // 0.04
quelle
Warum nicht globalisieren? Dies ist nur eines der Probleme, auf die Sie stoßen können, wenn Sie nicht die englische Sprache verwenden:
Globalize.parseFloat('0,04'); // 0.04
Einige Links zum Stapelüberlauf, die Sie sich ansehen sollten:
quelle
parseFloat
Analysiert nach der JavaScript- Definition eines Dezimalliteral , nicht nach der Definition Ihres Gebietsschemas. (ZBparseFloat
ist das Gebietsschema nicht bekannt.) Dezimalliterale in JavaScript werden.
für den Dezimalpunkt verwendet.quelle
Wie @JaredPar in seiner Antwort betonte, verwenden Sie
parseFloat
mit ersetzenvar fullcost = parseFloat($("#fullcost").text().replace(',', '.'));
Nur das Ersetzen
comma
durch eindot
wird behoben, es sei denn, es ist eine Zahl über den Tausenden wie1.000.000,00
diese, erhalten Sie die falsche Ziffer. Sie müssen also dascomma
Entfernen der ersetzendots
.// Remove all dot's. Replace the comma. var fullcost = parseFloat($("#fullcost").text().replace(/\./g,'').replace(',', '.'));
Durch die Verwendung von zwei Ersetzungen können Sie mit den Daten umgehen, ohne falsche Ziffern in der Ausgabe zu erhalten.
quelle
Es ist besser, diese Syntax zu verwenden, um alle Kommas in einem Fall von einer Million 1.234.567 zu ersetzen
var string = "1,234,567"; string = string.replace(/[^\d\.\-]/g, ""); var number = parseFloat(string); console.log(number)
Das
g
bedeutet, alle Kommas zu entfernen.Überprüfen Sie die Jsfiddle-Demo hier .
quelle
Zahlen in JS verwenden ein
.
Zeichen,
( Punkt / Punkt), um den Dezimalpunkt anzugeben, nicht ein (Komma).quelle
Für alle, die hier ankommen und sich fragen, wie sie mit diesem Problem umgehen sollen, bei dem Kommas (
,
) und Punkt (.
) möglicherweise eine Rolle spielen, das genaue Zahlenformat jedoch möglicherweise nicht bekannt ist - so korrigiere ich eine Zeichenfolge vor der VerwendungparseFloat()
(Ausleihen von Ideen aus anderen Antworten):function preformatFloat(float){ if(!float){ return ''; }; //Index of first comma const posC = float.indexOf(','); if(posC === -1){ //No commas found, treat as float return float; }; //Index of first full stop const posFS = float.indexOf('.'); if(posFS === -1){ //Uses commas and not full stops - swap them (e.g. 1,23 --> 1.23) return float.replace(/\,/g, '.'); }; //Uses both commas and full stops - ensure correct order and remove 1000s separators return ((posC < posFS) ? (float.replace(/\,/g,'')) : (float.replace(/\./g,'').replace(',', '.'))); };
// <-- parseFloat(preformatFloat('5.200,75')) // --> 5200.75
Dies würde zumindest das Parsen von britischen / amerikanischen und europäischen Dezimalformaten ermöglichen (vorausgesetzt, die Zeichenfolge enthält eine gültige Zahl).
quelle
1,234.56
und1.234,56
Aus meinem Herkunftsland lautet das Währungsformat "3.050,89 €".
parseFloat identifiziert den Punkt als Dezimaltrennzeichen. Um zwei Werte hinzuzufügen, können wir ihn wie folgt setzen:
parseFloat(element.toString().replace(/\./g,'').replace(',', '.'))
quelle