NEWS
Verwirrung mit Datentypen in JS (string vs. number )
-
Hallo zusammen,
ich habe ein Skript um den Gasverbrauch aufzuarbeiten und in SQL / Sourceanalytix zu verarbeiten. Das funktioniert soweit auch ganz gut nur bekomme ich eine Warnung im Log bzgl. der Zuweisung von Werten. Hier der interessante Teil des Skripts:
var iAktuell = 'javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand' // Aktueller Stand des Gaszählers - Ist ein State vom Typ "Number" [...] // Hier wird eine kleine Zwischenberechnung gemacht (iZwSumme wird mir bei MouseOver ebenfalls als Number angezeigt) var lfAktuellm3 = ((parseFloat(getState(iAktuell).val)) + iZwSumme / 1000).toFixed(3); // Beim Versuch den Wert in in den o.g. State zurück zu schreiben erhalte ich die Warnung: setState(iAktuell, lfAktuellm3); // Auch so wird es nicht besser... Die Warnung bleibt setState(iAktuell, parseFloat(lfAktuellm3).toFixed(3));
Hier nochmal die vollständige Warnung:
You are assigning a string to the state "javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand" which expects a number. Please fix your code to use a number or change the state type to string.
Jemand eine Idee, wie man es besser machen könnte?
-
-
@h1ob Nimm mal das "toFixed(3)" weg. Das konvertiert die Nummer zum String.
Wenn du sicher gehen willst das du nur 3 Nachkommastellen hast bietet sich "math.round(val * 1000) / 1000" an
A.
-
@h1ob sagte in Verwirrung mit Datentypen in JS (string vs. number ):
toFixed(3)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed
Return value
A string representing the given number using fixed-point notation.
toFixed()
gibt einen String zurück. Wenn du eine Zahl übergeben willst, dann lass dastoFixed()
einfach weg. -
@h1ob sagte in Verwirrung mit Datentypen in JS (string vs. number ):
javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand
Warum liegt das Skript im Systemverzeichnis
script.enabled
? -
Ich danke euch. Da stand ich wohl komplett auf dem Schlauch. Die Warnung ist nun weg.
@Homoran said in Verwirrung mit Datentypen in JS (string vs. number ):
@h1ob sagte in Verwirrung mit Datentypen in JS (string vs. number ):
javascript.0.scriptEnabled.Zaehler.Gas.aktuellerstand
Warum liegt das Skript im Systemverzeichnis
script.enabled
?Das Skript liegt da nicht. Nur die beiden states die ich für das Skript brauche. Ist unschön, ich weiß. Aber das Skript ist mittlerweile ein paar Jahre alt und damals wusste ich es nicht besser.
-
@h1ob sagte in Verwirrung mit Datentypen in JS (string vs. number ):
Aber das Skript ist mittlerweile ein paar Jahre alt und damals wusste ich es nicht besser.
Grund genug es jetzt mal richtig zu machen