FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: mi.ke am 20 Februar 2022, 18:56:13

Titel: (gelöst) Nachkommastellen erzwingen
Beitrag von: mi.ke am 20 Februar 2022, 18:56:13
Moin,

wie kann man mit einer Formatierung einer ganzen Zahl eine Nachkommastelle verpassen?

Also nicht mehr Wert 0, sondern 0.0
0der Wert 1 soll dann 1.0 sein.

Mit sprintf hab ich's nicht hinbekommen.

Titel: Antw:Nachkommastellen erzwingen
Beitrag von: betateilchen am 20 Februar 2022, 19:20:14
Zitat von: mi.ke am 20 Februar 2022, 18:56:13
Mit sprintf hab ich's nicht hinbekommen.

{sprintf("%.1f",1)}
Titel: Antw:Nachkommastellen erzwingen
Beitrag von: mi.ke am 20 Februar 2022, 22:58:37
genauso hatte ich's gemacht, allerdings die "glatten" Zahlen "x,0" waren immer ohne Nachkomma.


humidity {sprintf("%.0f",ReadingsVal($name,"humidity_Sum",0))},
temperature {sprintf("%.1f",ReadingsVal($name,"temperature_Sum",0))}


Jetzt weiss ich, dass ich auf dem richtigen Weg bin.

Danke Dir!

PS.
Es geht natürlich um die "temperature" aus den oberen Beispiel  8)
Titel: Antw:(gelöst) Nachkommastellen erzwingen
Beitrag von: betateilchen am 20 Februar 2022, 23:07:20
*grübel*

funktioniert es denn nun oder nicht?

Bei mir funktioniert sowohl

{sprintf("%.1f",1)}

als auch

{sprintf("%.1f",1.0)}

absolut korrekt, in beiden Fällen kommt 1.0 als Ergebnis zurück.

Was nicht funktionieren kann, wäre

{sprintf("%.1f",1,0)}

weil perl einen Punkt als Dezimaltrenner verwendet und kein Komma.

Zitat von: mi.ke am 20 Februar 2022, 22:58:37
allerdings die "glatten" Zahlen "x,0" waren immer ohne Nachkomma.

Vermutlich kannst Du das Problem einfach umgehen, indem Du statt mit ReadingsVal() mit ReadingsNum() arbeitest.
Titel: Antw:(gelöst) Nachkommastellen erzwingen
Beitrag von: mi.ke am 20 Februar 2022, 23:44:55
wie gesagt, es funktioniert

im Input eingegeben:
{sprintf("%.1f",1)}
ist das Resultat 1.0

Mein Fehler war, dass ich nicht über die Eingabe gegengecheckt, sondern gleich am Syntax gezweifelt habe.

Danke nochmal