Rechenproblem im Script

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Matsch
Beiträge: 5552
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 120 Mal
Danksagung erhalten: 763 Mal

Re: Rechenproblem im Script

Beitrag von Matsch » 04.01.2024, 16:24

Ich glaub, zur impliziten Typkonvertierung steht da nichts. Oder?

Tyfys
Beiträge: 582
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 29 Mal
Danksagung erhalten: 137 Mal

Re: Rechenproblem im Script

Beitrag von Tyfys » 04.01.2024, 16:31

Matsch hat geschrieben:
04.01.2024, 16:24
zur impliziten Typkonvertierung
nicht mit diesen Worten.
aber:

4.2 Besonderheiten bei komplexen Ausdrücken
....
Ausdrücke werden von rechts nach links aufgelöst. Da es bei Operatoren keine Rangfolge gibt,
können zusätzlich Klammern verwendet werden.
Der Datentyp einer Operation wird jeweils durch den linken Operanden bestimmt. Dies hat
ebenfalls Auswirkungen auf Ausdrücke, die mit unterschiedlichen Datentypen arbeiten.

...
Dieses Verhalten kann zu Schwierigkeiten führen, wenn Ganzzahlen und Gleitkommazahlen
gemischt werden. In einem solchen Fall kann das Umstellen der Operanden eine Lösung sein.

....
Um ein Ergebnis bzw. Teilergebnis vom Typ „real“ zu erzwingen, kann 0.0 auf der linken Seite
addiert werden.
Gruß
Harry

Matsch
Beiträge: 5552
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 120 Mal
Danksagung erhalten: 763 Mal

Re: Rechenproblem im Script

Beitrag von Matsch » 04.01.2024, 16:44

Hmm, ich kann schon verstehen , wenn das jemand zum ersten mal liest, dass das nicht wirklich in Gänze zu begreifen ist. Zumal das Verhalten hier doch recht abstrus ist und von allem Bekannten abweicht.

Tyfys
Beiträge: 582
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 29 Mal
Danksagung erhalten: 137 Mal

Re: Rechenproblem im Script

Beitrag von Tyfys » 04.01.2024, 17:27

Matsch hat geschrieben:
04.01.2024, 16:44
wenn das jemand zum ersten mal liest, dass das nicht wirklich in Gänze zu begreifen ist.
Ist doch auch durch Beispiele erläutert.

Kann man dann ja gerne selbst noch einmal im Skript test Fenster probieren.
Gruß
Harry

MichaelN
Beiträge: 9805
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 711 Mal
Danksagung erhalten: 1656 Mal

Re: Rechenproblem im Script

Beitrag von MichaelN » 04.01.2024, 17:38

Matsch hat geschrieben:
04.01.2024, 16:44
Hmm, ich kann schon verstehen , wenn das jemand zum ersten mal liest, dass das nicht wirklich in Gänze zu begreifen ist. Zumal das Verhalten hier doch recht abstrus ist und von allem Bekannten abweicht.
Ja, das ist wohl wahr. Mit soviel abstrusen scheiß habe ich anfangs auch nicht gerechnet. Ich würde aber auch keine reale Zahl einen integer zuweisen, nur weil es geht.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Tyfys
Beiträge: 582
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 29 Mal
Danksagung erhalten: 137 Mal

Re: Rechenproblem im Script

Beitrag von Tyfys » 04.01.2024, 17:44

sowas müsste gar nicht gehen dürfen :

Code: Alles auswählen

integer  a = 0.4711;
Das ist ja die Falle, in die man nichts ahnend tappt.
Gruß
Harry

Matsch
Beiträge: 5552
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 120 Mal
Danksagung erhalten: 763 Mal

Re: Rechenproblem im Script

Beitrag von Matsch » 04.01.2024, 17:46

Korrekt.
Genau deshalb will ich den TO auch etwas in Schutz nehmen. Selbst nach Jahren tappe ich immer mal wieder in so ein Falle, nur weiß ich dann halt, wo der Fehler liegen könnte.

MichaelN
Beiträge: 9805
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 711 Mal
Danksagung erhalten: 1656 Mal

Re: Rechenproblem im Script

Beitrag von MichaelN » 04.01.2024, 18:29

Tyfys hat geschrieben:
04.01.2024, 17:44
Das ist ja die Falle, in die man nichts ahnend tappt.
Was? Man "ahnt" nicht, das eine Zahl mit Kommastellen kein Integer ist?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Black
Beiträge: 5548
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 434 Mal
Danksagung erhalten: 1096 Mal
Kontaktdaten:

Re: Rechenproblem im Script

Beitrag von Black » 04.01.2024, 18:29

Ist halt etwas gewöhnungsbedürftig.

Eigentlich empfielt sich:
Immer die Variablen mit dem korrekten Typ anlegen.

sollte sich der Typ geändert haben (manche Editoren zeigen den Wert, den Typ und eine eventuelle Typänderung nach einem Scriptdurchlauf auch an)
ist dies ein Indiz, wo man dann mal genauer hinschauen sollte.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Tyfys
Beiträge: 582
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 29 Mal
Danksagung erhalten: 137 Mal

Re: Rechenproblem im Script

Beitrag von Tyfys » 04.01.2024, 18:53

]
MichaelN hat geschrieben:
04.01.2024, 18:29
Man "ahnt" nicht, das eine Zahl mit Kommastellen kein Integer ist?
Ich meinte das mehr in dem Sinne, dass das einfach durchgeht beim Anlegen/definieren der Variablen.

Vergisst man bei einer string-Zuweisung die Delimeter, gehts ja auch nicht weiter.
Gruß
Harry

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“