NEWS
[gelöst] Lovelace zeigt keine gerundeten Werte
-
Falls Thread eher in Visualisierung passt, bitte verschieben - Danke.
Vielleicht hat Jemand einen Tipp:
In Lovelace bekomme ich regelmäßig keine gerundeten Werte angezeigt, obwohl ich nach meinem Verständnis die Werte vor der Auswertung in Lovelace runde.
- DECT-Gerät liefert Werte in Wh, also 5-stellig
- alias-DP soll in kWh auf eine (versuchsweise 2) Stellen runden
- dieser DP steht in der history zur Verfügung
- Lovelace liefert Zahlenwurm
Dann - nach einiger Zeit - passt die Anzeige wieder.
Versuche, beim konvertieren bzw. berechnen die Lösung zu finden, schlugen fehl.
Die Konvertierung auch beim Schreiben einzusetzen, hat nix geändert.,Auch wenn das nicht unbedingt überlebenswichtig ist, wüsste ich gern, woran das liegenen mag.
Any idea? -
@wcag22
Die Schreibkonvertierung ist bei "read only" DP überflüssig. Außerdem wäre sie falsch.
Rundung Wh --> kWh auf 2 Nachkommastellen:Math.round(val / 10) / 100
-
@paul53 sagte in Lovelace zeigt keine gerundeten Werte:
@wcag22
Die Schreibkonvertierung ist bei "read only" DP überflüssig.Danke, das war mir nicht bewusst. Es war auch nur der Versuch, herauszufinden, warum Lovelace keine gerundeten Wert anzeigt. Selbiges - wie erwähnt - probehalber auf 2 Stellen nach dem Komma.
Außerdem wäre sie falsch.
Rundung Wh --> kWh auf 2 Nachkommastellen:Math.round(val / 10) / 100
Sorry, das verstehe ich nicht. Ich rechne ja auch nicht "1000 /2 /5 " um auf den Wert 100 zu kommen.
Was ist an val( /1000) falsch?
Es sei denn, JS / ioB rechnet intern anders.Aber gut, ich werde es mal probieren.
Aber das ist aus meiner Sicht auch gar nicht das Problem. Der berechnete und gerundete Wert steht ja in der history und im DP der Objekte korrekt zur Verfügung. Und die Addition klappt ja auch.
Woher nimmt Lovelace also den Wert mit 13 Nachkommastellen?
DAS würde ich gern wissen -
@wcag22 sagte: Was ist an val( /1000) falsch?
Es ist prinzipiell nicht falsch, aber du wandelst mit .toFixed(2) erst in einen String und diesen anschließend mit parseFloat() in eine Zahl.
@wcag22 sagte: Woher nimmt Lovelace also den Wert mit 13 Nachkommastellen?
Das passiert bei Berechnungen mit Gleitkommawerten. Bei gerundetem Wert / 100 passiert es nach meiner Erfahrung nicht, wobei die Addition von 1008.8 so etwas verursachen kann. Versuche es mal mit
Math.round(val / 10 + 100880) / 100
-
@paul53 sagte in Lovelace zeigt keine gerundeten Werte:
Es ist prinzipiell nicht falsch, aber du wandelst mit .toFixed(2) erst in einen String und diesen anschließend mit parseFloat() in eine Zahl.
Ich habe es geahnt
Bei der Beschäftigung mit der round() Funktion habe ich völlig unterschiedliche Werte erhalten. Mal etwas zu wenig, mal völlig daneben. Und da schwante mir schon so etwas. Aber ich hätte es nicht benennen können.
Und richtig: ohne die Addition war alles ok.
Das wird es wohl gewesen sein. Ich danke Dir für die Hilfe. Dann schaun wir mal, ob Lovelace jetzt Ruhe gibt.
Ich setze den Thread auf gelöst.