[GELÖST] Rechnet RaspberryMatic falsch?

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Antworten
HmTec
Beiträge: 25
Registriert: 08.09.2014, 18:06
Danksagung erhalten: 1 Mal

[GELÖST] Rechnet RaspberryMatic falsch?

Beitrag von HmTec » 29.08.2018, 08:48

Hallo,

ich verstehe nicht, warum die folgenden Berechnungen zu einem unterschiedlichen Ergebnissen kommen.

Code: Alles auswählen

integer iDauer1 = 70000 - 30000 + 30;
WriteLine(iDauer1); ! Ergebnis falsch 39970 
integer iDauer2 = 30 + 70000 -30000;
WriteLine (iDauer2); ! Ergebnis richtig 40030
Rechnet das System falsch, oder wo ist mein Denkfehler?


Danke

Benutzeravatar
deimos
Beiträge: 5383
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 949 Mal
Kontaktdaten:

Re: Rechnet RaspberryMatic falsch?

Beitrag von deimos » 29.08.2018, 08:55

Hi,

aus der Homatic Skript Dokumentation:
In Homematic Script existiert keine natürliche Rangfolge von Operatoren. Aus der Mathematik bekannte Regeln wie z.B. „Punktrechnung geht vor Strichrechnung“ finden keine Anwendung.
Vielmehr werden Ausdrücke einfach von rechts nach links berechnet. Um die Reihenfolge der Abarbeitung zu beeinflussen, können Klammern verwendet werden.
Man kann jetzt sicher drüber streiten, ob das sinnvoll ist, aber es ist auf jeden Fall wohl dokumentiert.

Viele Grüße
Alex

Benutzeravatar
jmaus
Beiträge: 9817
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1855 Mal
Kontaktdaten:

Re: Rechnet RaspberryMatic falsch?

Beitrag von jmaus » 29.08.2018, 08:58

HmTec hat geschrieben:
29.08.2018, 08:48
Rechnet das System falsch, oder wo ist mein Denkfehler?
Dein "Denkfehler" ist, das in der ReGa solche Operationen von rechts nach links abgearbeitet werden und nicht wie man es eigentlich mathematisch macht von links nach rechts. D.h. wenn du das ganz so ohne klammern machst entspricht das folgendem:

Code: Alles auswählen

integer i;
i = 70000 - 30000 + 30; 
WriteLine(i); ! Ergebnis: 39970
i = 70000 - ( 30000 + 30 );
WriteLine(i); ! Ergebnis: 39970
i = ( 70000 - 30000 ) + 30;
WriteLine(i); ! Ergebnis: 40030
Ich hoffe das macht klar wie die ReGa solche Rechenoperationen durchführt. D.h. man ist immer gut beraten explizite Klammern zu verwenden um klarzustellen welche Operationen in welcher Reihenfolge durchgeführt werden sollen.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

HmTec
Beiträge: 25
Registriert: 08.09.2014, 18:06
Danksagung erhalten: 1 Mal

Re: Rechnet RaspberryMatic falsch?

Beitrag von HmTec » 29.08.2018, 09:00

klar doch.
Da habe ich aber schön auf dem Schlauch gestanden.
Danke

Antworten

Zurück zu „RaspberryMatic“