NEWS
[gelöst]ObjectBinding-2 Werte subtrahieren&runden
-
Hallo,
ich habe zwei Temperaturen, die ich direkt in Vis voneinander subtrahieren möchte. Das funktioniert auch mit einem HTML-Widget mit folgendem EIntrag
{t1:modbus.0.inputRegisters.0_T_WZ_AI;t2:hm-rpc.0.xxxxxxxxxx.1.TEMPERATURE;t1-t2}
Jetzt möchte ich das ganze auf 1 Nachkommastelle runden, da mir als Ergebnis manchmal 1.6000000000 o.ä. angezeigt wird. Das funktioniert aber so
{t1:modbus.0.inputRegisters.0_T_WZ_AI;t2:hm-rpc.0.xxxxxxxxxx.1.TEMPERATURE;t1-t2;round(1)}
nicht. Dann bekomme ich 0 angezeigt.
Bei meiner Windgeschwindigkeit funktioniert es mittels{openweathermap.0.forecast.current.windSpeed;*(3.6);round(1)}km/h
Wo ist mein Denkfehler
Gruß
Dolomiti -
@Dolomiti
wenn ich es richtig verstehe, dann gibt "round" immer nur ein ganzzahliges (also ohne Nachkommastellen) Ergebnis aus.Du könntest versuchen den errechneten Wert vor der Rundung mit 10 zu multiplizieren und nach der Rundung durch 10 zu dividieren um auf eine Nachkommastelle zu kommen.
-
@BBTown
In der Doku steht:round(N) - round the value with N places after point, e.g. 34.678;round(1) => 34.7
Bei der Windgeschwindigkeit geht das ja auch.
-
@Dolomiti ich habe nicht in der Doku nachgeschaut, sondern per google nach "round" in Verbindung mit JavaScript gesucht .... wenn es sich in ioBroker spezifisch/atypisch verhält, dann passt meine Antwort natürlich nicht
hast Du meinen Vorschlag denn mal ausprobiert?
Allgemein gäbe es unter JavaScript sonst noch "num.toFixed()"
Ich weiss aber nicht ob dies auch in ioBroker Anwendung findet?! -
versuch mal:
{t1:modbus.0.inputRegisters.0_T_WZ_AI;t2:hm-rpc.0.xxxxxxxxxx.1.TEMPERATURE;(t1-t2).toFixed(1)}
Sollte funktionieren. (Habs bei mir mit zwei Werten getestet da gehts)
-
-
@Dolomiti
Wenn ich es richtig verstanden habe, dann ist das Ergebnis von toFixed ein String; falls Du im Anschluss weiter mit solchen Werten rechnen wollen würdest -
@BBTown
Hab ich auch grad gelesen. Alternativ geht evtl. toPrecision. Allerdings muss man hier die Vorkommastellen mit einbeziehen. Für mich is toFixed i.O., da ich die Differenz nur im Vis anzeigen möchte.Danke für die Unterstützung
Edit: Hab grad noch mal nachgelesen und festegestellt, dass Round auf einen Integer rundet. W3schools. Falls also das Round aus der Vis-Doku und das oben beschriebene Round gleich funktionieren, stimmt die Vis-Doku nicht ganz und das kann nicht funktionieren.