NEWS
GetState.val Nachkommastellen festlegen
-
Hallo zusammen,
ich lasse mir aktuell diverse Werte via Befehl über Telegram ausgeben. Die Werte haben allerdings 4 bis 5 Nachkommastellen.
Gibt es die Möglichkeit die Nachkommastelle festzulegen?
Folgenden Code verwende ich:
var slaid = "hm-rega.0.7029"/*Strom Leistungsaufnahme aktuell*/; var sla = getState(slaid).val;
sla lasse ich mir dann per Telegram Befehl schicken.
Welche Möglichkeiten habe ich um den Wert auf 2 Nachkommastellen zu begrenzen bzw. kann ich das auch anders lösen?
Mfg
-
Man kann den Wert in einen String mit vorgegebener Anzahl an Nachkommastellen (im Beispiel 2) umwandeln:
var slaid = "hm-rega.0.7029"/*Strom Leistungsaufnahme aktuell*/; var sla = getState(slaid).val.toFixed(2) + ' W';
und auch noch eine Maßeinheit mitgeben.
-
Super vielen Dank!
Werde es nachher gleich mal umsetzen [emoji2]
-
Funktioniert das ganze auch bei setState? Würde gerne bei einer Funktion auch die Nachkommastelle mit angeben, da ich aktuell im Ergebnis 6 Nachkommastellen habe.
function ZPDAY() { setState('javascript.0.Strom.Prozent.Stromverbrauch_%_S1+S2-DAY', (getState(SVD).val / getState(ZSZD).val) *100); }
mfg
-
function ZPDAY() { val wert = (getState(SVD).val / getState(ZSZD).val) *100; setState('javascript.0.Strom.Prozent.Stromverbrauch_%_S1+S2-DAY', wert.toFixed(2)); }
Gruß
Pix
-
@pix:function ZPDAY() { val wert = (getState(SVD).val / getState(ZSZD).val) *100; setState('javascript.0.Strom.Prozent.Stromverbrauch_%_S1+S2-DAY', wert.toFixed(2)); }
Gruß
Pix `
Ich empfehle toFixed nicht zu benutzen. Da Ergebnis von toFixed ist "string".Besser
setState('javascript.0.Strom.Prozent.Stromverbrauch_%_S1+S2-DAY', Math.round(wert * 100) / 100);
-
Ich empfehle toFixed nicht zu benutzen. Da Ergebnis von toFixed ist "string".
Besser
setState('javascript.0.Strom.Prozent.Stromverbrauch_%_S1+S2-DAY', Math.round(wert * 100) / 100); ```` `
Wie genau muss ich meine Berechnung
(getState(SVD).val / getState(ZSZD).val) *100
hier mit einbauen? Wie wird die Anzahl der Nachkommastelle hier definiert?
Ist (wert *100) / 100 nicht wieder = wert?
mfg
-
Ich empfehle toFixed nicht zu benutzen. Da Ergebnis von toFixed ist "string".
Besser
setState('javascript.0.Strom.Prozent.Stromverbrauch_%_S1+S2-DAY', Math.round(wert * 100) / 100); ```` `
Wie genau muss ich meine Berechnung
(getState(SVD).val / getState(ZSZD).val) *100
hier mit einbauen? Wie wird die Anzahl der Nachkommastelle hier definiert?
Ist (wert *100) / 100 nicht wieder = wert?
mfg `
var val = Math.round((getState(SVD).val / getState(ZSZD).val) *10000) / 100;
Z = 6.7899; 6.7899 * 100 = 678.99; Math.round(678.99) = 679; 679 / 100 = 6.79 Math.round(Z * 100) / 100 = 6.79
-
Perfekt, danke