Autor Thema: [gelöst] ReadingsNum rechnet anders als erwartet  (Gelesen 1089 mal)

Offline FHEMAN

  • Sr. Member
  • ****
  • Beiträge: 696
[gelöst] ReadingsNum rechnet anders als erwartet
« am: 24 Oktober 2021, 20:56:06 »
Hi, ich konnte in Commandref und Wiki keine weiteren Details zu ReadingsNum finden. Ich habe festgestellt, dass ReadingsNum - ReadingsNum teils ein falsches Ergebnis liefert:
1. ReadingsNum("","", 11.2) - ReadingsNum("","", 11.1)
= 0.0999999999999996 //falsch
2. ReadingsNum("","", 1.2) - ReadingsNum("","", 1.1)
= 0.0999999999999996 //falsch
3- ReadingsNum("","", 0.2) - ReadingsNum("","", 0.1)
= 0.1 //richtig
Das Ganze natürlich auch mit echten Readings.

Könnt ihr mir sagen, ob das ein Bug ist oder ich etwas übersehe?
Als Workaround mit dem Round-Parameter zu arbeiten wäre suboptimal, zumal die Default-Werte hier nicht berücksichtigt werden (nach meinem Verständnis).

Einen schönen Abend
Ronny
« Letzte Änderung: 24 Oktober 2021, 22:57:51 von FHEMAN »
NUC7i5 | PROXMOX | FHEM 5.9 | 2 HMLAND | HM | UMTS | LMS | HIFIBERRY | DOORBIRD | KM200 | HUE | ECHO | MILIGHT | LUFTDATENINFO | MQTT | INDEGO | ROBOROCK

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20209
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:ReadingsNum rechnet anders als erwartet
« Antwort #1 am: 24 Oktober 2021, 21:04:16 »
Hallo Ronny,

versuch mal  ;){11.2 - 11.1}Das hat nichts mit ReadingsNum zu tun, das ist die "ganz normale" Zahlendarstellung der digitalen Gleitkommaarithmetik. Wirst Du außer beim Taschenrecher sicher immer finden.
sprintf hilft Dir bei der finalen Darstellung nach Deinen Wünschen.
Beispiel:
{sprintf "%.2f", 11.2 - 11.1}

Gruß Otto
« Letzte Änderung: 24 Oktober 2021, 21:14:57 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1807
Antw:ReadingsNum rechnet anders als erwartet
« Antwort #2 am: 24 Oktober 2021, 21:53:14 »
sprintf hilft Dir bei der finalen Darstellung nach Deinen Wünschen.
Beispiel:
{sprintf "%.2f", 11.2 - 11.1}

Was identisch zum round-Parameter ist ;-)

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20209
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:ReadingsNum rechnet anders als erwartet
« Antwort #3 am: 24 Oktober 2021, 22:14:59 »
Naja nicht wirklich wenn man die Aufgabe vom TE nimmt :)
{ReadingsNum("","", 1.2,1) - ReadingsNum("","", 1.1,1)}Er wollte ja das Ergebnis von ReadingsNum() - ReadingsNum() "richtig". Oder ich habe den "Round - Parameter" nicht verstanden.
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline FHEMAN

  • Sr. Member
  • ****
  • Beiträge: 696
Antw:ReadingsNum rechnet anders als erwartet
« Antwort #4 am: 24 Oktober 2021, 22:57:23 »
Ich nutze Fhem natürlich nur als Taschenrechner  ;)

Naja nicht wirklich wenn man die Aufgabe vom TE nimmt :)
{ReadingsNum("","", 1.2,1) - ReadingsNum("","", 1.1,1)}Er wollte ja das Ergebnis von ReadingsNum() - ReadingsNum() "richtig". Oder ich habe den "Round - Parameter" nicht verstanden.
Round wirkt sich nicht auf die angegebenen Default Values von ReadingsNum aus. Gänzlich sauber ist das nicht.
« Letzte Änderung: 24 Oktober 2021, 23:13:25 von FHEMAN »
NUC7i5 | PROXMOX | FHEM 5.9 | 2 HMLAND | HM | UMTS | LMS | HIFIBERRY | DOORBIRD | KM200 | HUE | ECHO | MILIGHT | LUFTDATENINFO | MQTT | INDEGO | ROBOROCK

Offline frober

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 1061
  • Was man nicht kann, kann man lernen...
Antw:[gelöst] ReadingsNum rechnet anders als erwartet
« Antwort #5 am: 25 Oktober 2021, 10:41:10 »
Man kann auch das Fhem eigene round() benutzen, das ist analog sprintf, jedoch einfacher zu schreiben:

{round(ReadingsNum("","", 1.2) - ReadingsNum("","", 1.1),1)}
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...
Informativ Informativ x 1 Liste anzeigen