NEWS
[gelöst] Runden in Blockly
-
Hallo,
prinzipiell klappt das Runden , aber:
Wert 12.95 wird leider gerundet auf 13 und nicht auf 13.0
Wert 11.15 wird richtig gerundet auf 11.2
Es ist nur eine Kleinigkeit, aber in der Darstellung der Werte untereinander fällt es auf.
Es ist unabhängig von der Anzahl der vorgegebenen Dezimalstellen beim Rundungsbefehl in Blockly.
Wie komme ich beim Runden auf ".0"? -
@dgr sagte in Runden in Blockly:
Wie komme ich beim Runden auf ".0"?
Das geht nur, wenn Du den Datentyp wechselst (zu String). Als numerische Darstellung macht es ja relativ wenig Sinn, da eine 0 anzuhängen. Warum auch? Und warum sollte es genau eine sein (und nicht 2 oder 100)
-
@dgr sagte in Runden in Blockly:
wird richtig gerundet
beides ist richtig!
13.0 wäre falsch gerundet
-
@dgr Neben dem, was @haus-automatisierung gesagt hat, ist blockly eigentlich nicht für das "Aussehen" in der Darstellung zuständig.
Wo werden denn die Werte untereinander dargestellt?
Schreibt Blockly in eine Text-Datei?
Darstellung in einem Vis View?In ersterem Fall würde ich ggfs. Blockly für die Formatierung zuständig sehen.
Im zweiten Fall würde ich schauen, ob man sogar mit den nicht gerundeten Werten in die Visualisierung gehen, und dort die Rundung und Formatierung erledigen kann ... -
Danke für die (unbeabsichtigte) Erinnerung, dass ich noch einen neuen Blockly-Block einführen wollte: https://github.com/ioBroker/ioBroker.javascript/pull/1925
-
@haus-automatisierung
Wenn ich auf eine Nachkommastelle runde, dann hätte ich erwartet, dass auch eine Nachkommastelle erscheint. Also z. B. bei 25.03 sollte es dann 25.0 sein.
Im Moment kann ich es nicht genau sagen, aber unter Javascript funktioniert es glaube ich mit .toFixed(1)
Das Ergebnis ist dann schon ein String-Wert.
Wie hier schon geschrieben, scheint es in Blockly wirklich nur über String machbar zu sein. -
JavaScript gibt zahlen immer in der kürzest möglichen Darstellung aus.
Also
float 25.000 immer also 25 und
Float 25.001 immer als 25.001Wenn man eine feste Anzahl an Stellen nach dem Komma haben will muss das für JavaScript ein String sein. Daher auch der Befehl toFixed
Bitte auc die Besonderheiten bei negativen Zahlen beachten
https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed -
@martinp
Die Darstellung erfolgt in Grafana. Die eigentliche Ursache bei mir ist wohl doch, dass der zu rundende Wert das Format "Number" hat. -
-
@dgr Wenn Du den Wert in eine Datenbank schreibst, dann bitte nicht als String. Dann ist Grafana für die Darstellung der Nachkommastellen zuständig.
-
-
@dgr sagte in Runden in Blockly:
@martinp
Die Darstellung erfolgt in Grafana. Die eigentliche Ursache bei mir ist wohl doch, dass der zu rundende Wert das Format "Number" hat.Mich irritiert eher die letzte Zeile Deines Screenshots ...
Grafana formatiert sogar bei "unsichtbarem" Dezimalpunkt die Ziffern der Zahl passend, nur beim letzten Wert ist der vorhandene Dezimalpunkt verschoben... -
@martinp
da muss ich wohl in meinem Script, das die Werte zusammen stellt, noch einen Fehler haben. Ich kann das aber erst nächste Woche prüfen. -
@haus-automatisierung
Hallo,
ich bin jetzt wieder bei mir vor Ort.
Diesen Blockly-Block würde ich gerne mal ausprobieren. Wie kann ich den hier verfügbar machen? -
@dgr sagte in Runden in Blockly:
Wie kann ich den hier verfügbar machen?
Warten bis der PR gemerged wurde und es eine neue Beta-Version gibt. Anders leider nicht.
-
@dgr
Es funktioniert jetzt mit der Umwandlung des Wertes nach String. Vielleicht nicht elegant, aber es läuft.