NEWS
Kommazahl 0 anhängen
-
@malaus das eine ist ein string.. das andere ein number
und das ist abhängig von der angegebenen Landesfprmatierunghttps://linuxhint.com/add-commas-number-javascript/
mit parseFloat machst du aus dem x String ein number ..
-
@arteck meine Idee war, dass ich die erhaltene Number mit toFixed() in ein String umwandle und zwei Kommastellen hinzufüge. Danach das ganze wieder zurück zu Number. Aber leider werden hier die neu hinzugefügte Kommastellen nicht mitgenommen.
In deinem Beispiel werden größere Zahlen als Kommazahlen umgewandelt.
Ich habe mal folgendes ausprobiert.console.log("Example to add comma to number"); const num = 57484; const numFor = Intl.NumberFormat('en-US'); const new_for = numFor.format(num); console.log(new_for)
Leider funktioniert dieses Beispiel nur bei größeren Zahlen. Wenn die Zahl 23 ist, erhalte ich als Ergebnis 23.
Gebe ich 2300 ein, erhalte ich als Ergebnis 2,300 -
@malaus da in dem JavaScript Adapter auch JSONATA enthalten ist kannst Du über $formatNumber die Zahl in einen String umwandeln und mit picture das Ausgabeformat festlegen.
-
const fmtDe = Intl.NumberFormat('en-US', { minimumIntegerDigits: 1, minimumFractionDigits: 1, maximumFractionDigits: 3 }); let number1 = 23.00001; let number2 = 23.12389; log(fmtDe.format(number1)); log(fmtDe.format(number2));
-
@malaus sagte in Kommazahl 0 anhängen:
Aber leider werden hier die neu hinzugefügte Kommastellen nicht mitgenommen
Ein Trugschluss!
Die "Kommastellen" sind sehr wohl enthalten. Sie werden ohne weiteres Zutun lediglich nicht dargestellt.
Für die Darstellung (Vis oder Log) wird die Zahl implizit in einen String konvertiert. Nachkommastellen werden dabei nur dann mit ausgegeben, wenn man das explizit mit angibt.@malaus sagte in Kommazahl 0 anhängen:
Gebe ich 2300 ein, erhalte ich als Ergebnis 2,300
Auch das ist ein Trugschluss. Das "Komma" ist hier kein Komma, sondern das Tausender-Trennzeichen im angegebenen Länderformat (en-US).
Wenn Du - wie in D/A/CH üblich - den Punkt als Tausender-Trennzeichen haben möchtest, musst Du das gewünschte Länderformat (de-DE) mit angeben. -
So ich habs gerade im JS Adapter getestet und JSONATA tut jedenfalls:
console.log(jsonataExpression(23,'$formatNumber($, "0,00",{\'decimal-separator\':\',\'})'));
-
@mickym wenn ich das ausführe, erhalte ich wieder einen String?
Wie wäre das, wenn ich das dann in eine Number schreiben möchte? -
@malaus sagte in Kommazahl 0 anhängen:
....meine Idee war, dass ich die erhaltene Number mit toFixed() in ein String umwandle und zwei Kommastellen hinzufüge. Danach das ganze wieder zurück zu Number.
Sobald Du etwas wieder in eine Zahl zurückverwandeltst, dann verlierst Du die Formatierung. Intern werden Zahlen nicht mit 0 hinter dem Komma gerechnet und Dezimaltrenner sind nun mal Punkte und kein Komma. Entweder Du wandelst eine Zahl in einen String um, um das darzustellen, aber Du wirst JS nicht dazu bringen Dezimalzahlen mit Komma als Zahlen zu akzeptieren. Deswegen ist das Zurückkonvertieren in Number völlig verkehrt.
-
@mickym danke für diese Info. Dann kann ich das lange probieren.
-
hat sich überschnitten.