NEWS
UNSOLVED Funktion formatValue in Beschriftung
-
Systemdata Bitte Ausfüllen Hardwaresystem: Pi4 Arbeitsspeicher: 8GB Festplattenart: SD-Karte Betriebssystem: Ubuntu/Windows/Mac Node-Version: 12.20.0 Nodejs-Version: 12.20.0 NPM-Version: 6.14.8 Installationsart: Skript/Manuell Image genutzt: Nein Ort/Name der Imagedatei: Link Hallo
Ich versuche den Temperaturwert mit einer permanenten Nachkommastelle in einem Beschriftungsstring zu formatieren. Kein Erfolg so weit. Andere Funktionen wie min(30) oder *(2) gehen problemlos.Hier der Beschriftungsstring:
{hm-rpc.0.KEQ0579377.4.ACTUAL_TEMPERATURE;formatValue('#.0');} °CEine Idee warum das nicht klappt oder ist es ein Bug?
Gruß
Tom -
@BitCoder sagte:
mit einer permanenten Nachkommastelle in einem Beschriftungsstring
val.toFixed(1) // Zahl in String mit einer Nachkommastelle
-
@paul53
Danke für die rasche Antwort. Ich bin zu blöd und verstehe deine Lösung nicht. Wie muss ich den String in der Beschriftung anpassen, dass es funktioniert?
Im Moment sieht der Beschrifungsstring so aus:{hm-rpc.0.KEQ0579377.4.ACTUAL_TEMPERATURE} °C
wo kommt nun das val.toFixed(0) hin?
Gruss
Tom -
-
habe es mit einem html widget probiert
{vart:controll-own.0.AAATEST.TestString1; vart=Number(Math.round(vart*100)/100)}
rundet einen teststring auf 2 stellen nach dem komma
-
@liv-in-sky sagte in Funktion formatValue in Beschriftung:
{vart:controll-own.0.AAATEST.TestString1; vart=Number(Math.round(vart*10)/10)} -> modifiziert
dies hatte ich bereits in einem anderen Bezug versucht, die Ausgabe ist jedoch bei mehreren Nachkommastellen von
vart
x.x was funktioniert. Istvart
aber eine Zahl ohne Komastelle (z.b. 6), kommt als Ergebnis 6 statt 6.0 raus.@BitCoder möchte jedoch
(...) einer permanenten Nachkommastelle (...)
-
@ice987 sagte:
Zahl ohne Komastelle (z.b. 6), kommt als Ergebnis 6 statt 6.0 raus.
Das ist generell bei Zahlen so. Eine permanente Nachkommastelle kann nur ein String darstellen. In Javascript gibt es dafür zahl.toFixed(1):
-
das funktioniert bei mir
mit 6 =6.00
oder 6.4445 = 6.45{v:controll-own.0.AAATEST.TestString1;(v/1).toFixed(2)}
-
das funktioniert!
v
= 6: ergibt Ausgabe: 6.0
v
= 6.123: ergibt Ausgabe: 6.1Vielen Dank!
-
-
@liv-in-sky
Damit es klarer ist, würde ich es so verwenden:{val:hm-rpc.0.KEQ0579377.4.ACTUAL_TEMPERATURE;Number(val).toFixed(1)} °C
Dass die Division durch 1 in eine Zahl wandelt, ist nicht für jeden gleich ersichtlich.
Anstelle von Number() kann auch parseFloat() verwendet werden. -
Jetzt bin ich überwältigt, wie viele sich beteiligt haben, sich der Sache anzunehmen.
Die Variante von paul53 gefällt mir persönlich am besten. Das mit der Division war mir nicht klar, bis du das mit dem Cast erklärt hast.
Besten Dank. Es funktioniert jetzt so, wie ich mir das vorgestellt habe.Trotzdem ist die Geschichte mit der Funktion formatValue(decimals) nicht gelöst. So wie es in der Dokumentation beschrieben ist, funktioniert es meines Erachtens nicht.
Gruss an alle Helfer
Tom