QML parseFloat()
-
Hallo,
ich programmiere gerade einen Taschenrechner in QML.
Replace() ein Punkt zu einem Komma. Dann Wandel ich den String zu ein Float.Aber parseFloat() macht mir aus einen String mit einen Komma eine Ganzzahl und aus einen String mit einen Punkt ein Float. Interpretiert parseFloat() Komma oder Punkt anders?
button11.onClicked: { if (aktiveEingabe === 1){ let punkt = "."; let komma = punkt.replace(".",","); textField.text=textField.text + komma; }else{ let punkt = "."; let komma = punkt.replace(".",","); textField1.text = textField1.text + komma; } }
function operatorEingabe(operator) { //für das Ergebnis var ergebnis = 0.0 //die Werte umwandeln var zahl1_1 = textField.text; var zahl1_2 = textField1.text; var zahl1 = parseFloat(textField.text); var zahl2 = parseFloat(textField1.text); //hat die Umwandlung geklappt? if (isNaN(zahl1) || isNaN(zahl2)) { ausgabe.text = "Die Konvertierung ist gescheitert."; return; }
-
@M-W43 said in QML parseFloat():
Interpretiert parseFloat() Komma oder Punkt anders
sicher der Rest der Welt hat nen Punkt als Trenner zum Zahlenbruch. Deutsch ist da ziemlich alleine mit
,
als Trenner.parseFloat akzeptiert daher nur
.
als gültiges Zeichen in der Zeichenkette -
@M-W43 said in QML parseFloat():
Aber parseFloat() macht mir aus einen String mit einen Komma eine Ganzzahl und aus einen String mit einen Punkt ein Float. Interpretiert parseFloat() Komma oder Punkt anders?
Um ein String in Float zu konvertier und dabei die Spracheinstellung Berücksichtigung, ist es besser/einfacher
Number.fromLocaleString()
zu benutzen:var german = Qt.locale("de_DE"); var d; d = Number.fromLocaleString(german, "1234,56") // d == 1234.56 d = Number.fromLocaleString(german, "1.234,56") // d == 1234.56 d = Number.fromLocaleString(german, "1234.56") // throws exception d = Number.fromLocaleString(german, "1.234") // d == 1234.0
-
@KroMignon
so scheint es zu klappen!function operatorEingabe(operator) { //für das Ergebnis var ergebnis = 0.0 //die Werte umwandeln var zahl1_1 = textField.text; var zahl1_2 = textField1.text; var german = Qt.locale("de_DE"); var zahl1 = Number.fromLocaleString(german, zahl1_1); var zahl2 = Number.fromLocaleString(german, zahl1_2); //hat die Umwandlung geklappt? if (isNaN(zahl1) || isNaN(zahl2)) { ausgabe.text = "Die Konvertierung ist gescheitert."; return;