React und HTML Javascript Ausgabe einer Zahl
Problem:
Deutsche Zahlen werden in javascript / html falsch berechnet.
Lösung:
Wenn man in javascript oder react deusche Zahlen als String einliest in eine react-Zahl vom typ number, dann werden in der Regel die . Punkt und , Komma falsch übernommen.
Deshalb habe ich die kleine Umwandlungs-Funktion geschrieben
convert_german_to_number(string) number
Beim lesen einer deutschen Zahl als String
let sumPunkteGesamt: number =this.convert_german_to_number(row[sFeld_Punkte_Gesamt + ".SUM"]); |
private convert_german_to_number(sValue:string) : number { //*convert german 3.015,67 sValue=sValue.replace(".",""); sValue=sValue.replace(",","."); return parseFloat(sValue); }
private convert_english_to_german(sValue:string) : string { //*convert english 3015.67 to german 3015,67 sValue=sValue.replace(".",","); //sValue=sValue.replace(",","."); return sValue; } |
Ausgabe Englisch in Deutsch
Bei der Ausgabe kann mein java.number in deutsche Dezimal-Zahlen / Festkommazahlen mit 2 Stellen umwandeln, indem man erst
number.toFixed(2)
anwendet und dann
string.replace(".",",")
Beispiel Ausgabe in Sharepoint/react (mit java)
${ sumPunkteGesamt.toFixed(2).replace(".",",")} |
Log-Script….. zuvor gingen alle Ausgaben falsch aus
Fehlerhafte Ausgaben zuvor
Die Zahl ist 3013
${ (sumPunkteGesamt) } |
3.013
.toLocaleString("de-DE",{maximumFractionDigits:2,minimumFractionDigits:2}
${new Intl.NumberFormat('de-DE',{maximumFractionDigits:2}).format(sumPunkteGesamt) } |
3,01
${sumPunkteGesamt.toLocaleString("en-US",{minimumFractionDigits:2, maximumFractionDigits:2})} |
3.01
${sumPunkteGesamt.toLocaleString("en-US")} |
3.013
${sumPunkteGesamt.toLocaleString("de-DE")} |
3,013 ist falsch. Hier ist nur der Punkt vertauscht
${sumPunkteGesamt.toLocaleString} |
Ausgabe 3.103