Rechenproblem im Script

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Wichtelmann007
Beiträge: 222
Registriert: 26.02.2013, 21:11
Hat sich bedankt: 39 Mal

Rechenproblem im Script

Beitrag von Wichtelmann007 » 04.01.2024, 14:39

vermutlich ein blöder Fehler, was muss ich ändern?
Wenn ich für faktor zB 2 Eingebe, wird korrekt gerechnet.

Code: Alles auswählen

 integer faktor = 0.0366667;
 integer iVerbrauchAktuell = igesmin_Gesamt * faktor;
 integer iTankinhaltAktuell = oSVr_TankAktuell.Value();

WriteLine("faktor              "#faktor);
WriteLine("igesmin_Gesamt      "#igesmin_Gesamt);
WriteLine("iVerbrauchAktuell   "#iVerbrauchAktuell);
WriteLine("iTankinhaltAktuell  "#iTankinhaltAktuell);
Ausgabe:

Code: Alles auswählen

faktor              0.036667
igesmin_Gesamt      5057
iVerbrauchAktuell   0
iTankinhaltAktuell  3000.000000

Xel66
Beiträge: 14261
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 597 Mal
Danksagung erhalten: 1524 Mal

Re: Rechenproblem im Script

Beitrag von Xel66 » 04.01.2024, 14:52

Mach mal Klammern um die Rechnung. reiht nicht. Tausche einfach die beiden Faktoren der Rechnung. Vermutlich macht er aus dem Faktor eine Integerzahl (=0) und rechnet dann erst. Ist vermutlich eine Folge der dynamischen Typzuweisung.

Gruß Xel66
Zuletzt geändert von Xel66 am 04.01.2024, 14:58, insgesamt 1-mal geändert.
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

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

Re: Rechenproblem im Script

Beitrag von MichaelN » 04.01.2024, 14:58

Wenn man offensichtlich mit Integer rechnen will, sollte man sich nciht wundern, wenn es keine Nachkommastellen gibt.
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 +++

Xel66
Beiträge: 14261
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 597 Mal
Danksagung erhalten: 1524 Mal

Re: Rechenproblem im Script

Beitrag von Xel66 » 04.01.2024, 15:02

MichaelN hat geschrieben:
04.01.2024, 14:58
...wenn es keine Nachkommastellen gibt.
Das war ja nicht das Problem, sondern das Produkt war 0 und hätte 158 und ein paar Zerquetschte sein müssen. Die Rechenregeln der CCU sind das Problem (rechts nach links).

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

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, 15:09

Warum sind alle Variablen integer definiert, wenn es real sein sollen?

Code: Alles auswählen

integer igesmin_Gesamt = 5057;
real faktor = 0.0366667;
real iVerbrauchAktuell = igesmin_Gesamt.ToFloat() * faktor;

WriteLine("faktor              "#faktor);
WriteLine("igesmin_Gesamt      "#igesmin_Gesamt);
WriteLine("iVerbrauchAktuell   "#iVerbrauchAktuell);
Zuletzt geändert von Matsch am 04.01.2024, 15:14, insgesamt 2-mal geändert.

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

Re: Rechenproblem im Script

Beitrag von Tyfys » 04.01.2024, 15:12

sieh dir mal die Unterschiede an :

Code: Alles auswählen

integer a =0.0366667;
integer b = 2;

WriteLine(a.Type());
WriteLine(b.Type());

var c = b * a;
var d= a  * b;

WriteLine(c);
WriteLine(d);
Gruß
Harry

Wichtelmann007
Beiträge: 222
Registriert: 26.02.2013, 21:11
Hat sich bedankt: 39 Mal

Re: Rechenproblem im Script

Beitrag von Wichtelmann007 » 04.01.2024, 15:13

Xel66 hat geschrieben:
04.01.2024, 15:02
MichaelN hat geschrieben:
04.01.2024, 14:58
...wenn es keine Nachkommastellen gibt.
Das war ja nicht das Problem, sondern das Produkt war 0 und hätte 158 und ein paar Zerquetschte sein müssen. Die Rechenregeln der CCU sind das Problem (rechts nach links).

Gruß Xel66
DANKE, da soll mal einer drauf kommen...

Wichtelmann007
Beiträge: 222
Registriert: 26.02.2013, 21:11
Hat sich bedankt: 39 Mal

Re: Rechenproblem im Script

Beitrag von Wichtelmann007 » 04.01.2024, 15:15

Matsch hat geschrieben:
04.01.2024, 15:09
Warum sind alle Variablen integer definiert, wenn es real sein sollen?

Code: Alles auswählen

integer igesmin_Gesamt = 5057;
real faktor = 0.0366667;
real iVerbrauchAktuell = igesmin_Gesamt.ToFloat() * faktor;

WriteLine("faktor              "#faktor);
WriteLine("igesmin_Gesamt      "#igesmin_Gesamt);
WriteLine("iVerbrauchAktuell   "#iVerbrauchAktuell);
muss ich noch ändern, danke

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, 15:16

Du hast auch gesehen, dass ich die Integer in real konvertiert habe? Dann ist die Reihenfolge wurscht.

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

Re: Rechenproblem im Script

Beitrag von MichaelN » 04.01.2024, 15:57

da soll mal einer drauf kommen...
Man könnte ja die Doku lesen...
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 +++

Antworten

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