Fehler in ToInteger() Funktion

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
ruler42
Beiträge: 4
Registriert: 11.07.2017, 19:56

Fehler in ToInteger() Funktion

Beitrag von ruler42 » 19.09.2017, 15:33

Mir ist folgender Fehler aufgefallen:

Dieser Code:

real r = (0.7-0.4)*10;
real p = 0.3*10;

WriteLine("r:" #r);
WriteLine("p:" #p);

WriteLine("r int: "#r.ToInteger());
WriteLine("p int: "#p.ToInteger());

erzeugt dieses Ergebnis:

r:3.000000
p:3.000000
r int: 2
p int: 3

Obwohl r und p identisch zu sein scheinen liefert ToInteger() unterschiedliche Ergebnisse! Einziger unterschied zwischen r und p ist, dass bei der Kalukulation eine Summe zusätzlich verwendet wurde. Ich kann dieses Verhalten nicht nachvollziehen.

Ideen? :P

robsdobs
Beiträge: 510
Registriert: 08.08.2015, 22:52
Danksagung erhalten: 1 Mal

Re: Fehler in ToInteger() Funktion

Beitrag von robsdobs » 19.09.2017, 15:52

Das hatten wir schon mal:
viewtopic.php?f=19&t=38731
sehr selten im Forum

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Fehler in ToInteger() Funktion

Beitrag von Cash » 19.09.2017, 16:07

Welche Firmware nutzt Du?

P.S. als Admi würde ich einfach mal 2 IP.Nr vergleichen :mrgreen:

ruler42
Beiträge: 4
Registriert: 11.07.2017, 19:56

Re: Fehler in ToInteger() Funktion

Beitrag von ruler42 » 19.09.2017, 16:15

Cash hat geschrieben:Welche Firmware nutzt Du?
Die aktuellste: 2.29.22

Ausser CuXD auch keine anderen "Schweinereien"/Mods drauf.

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Fehler in ToInteger() Funktion

Beitrag von Cash » 19.09.2017, 16:32

Welchen Modus bei der Firmware? Nutzt Du die Beta-Version der Rega?

BadenPower

Re: Fehler in ToInteger() Funktion

Beitrag von BadenPower » 19.09.2017, 16:54

ruler42 hat geschrieben:Die aktuellste: 2.29.22
Da ist die ReGa-Version in der Standard- und Community-Ausführung die 0116.

Diese trägt den Fehler in sich.

Die Legacy-Version (0102) und auch die damit verbundenen älteren Firmware-Versionen laufen hingegen fehlerfrei.

Ab Beta-0120 sollte der Fehler wieder beseitigt sein.
.

Bulli
Beiträge: 494
Registriert: 29.04.2014, 18:38
Hat sich bedankt: 2 Mal
Danksagung erhalten: 9 Mal

Re: Fehler in ToInteger() Funktion

Beitrag von Bulli » 19.09.2017, 20:24

Hallo
version.jpg
rechn.jpg
Gruß
Bulli

BadenPower

Re: Fehler in ToInteger() Funktion

Beitrag von BadenPower » 19.09.2017, 21:00

Bulli hat geschrieben:Gruß
Bulli
Ja, Du hast es richtig erkannt und deshalb schrieb ich:
BadenPower hat geschrieben:Ab Beta-0120 sollte der Fehler wieder beseitigt sein.
Und anstatt dass es besser geworden wäre, sind jetzt die Rechenergebnisse noch schlimmer.
.

robsdobs
Beiträge: 510
Registriert: 08.08.2015, 22:52
Danksagung erhalten: 1 Mal

Re: Fehler in ToInteger() Funktion

Beitrag von robsdobs » 19.09.2017, 23:11

So wie ich das verstanden habe, ist mit Beta 20 die Ausgabe von WriteLine korrigiert worden und irgendwas mit dem Auslesen von real Werten bei Kanälen.

Das sich was an der Berechnung geändert hat, daran kann ich mich nicht erinnern.
sehr selten im Forum

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Fehler in ToInteger() Funktion

Beitrag von DrTob » 20.09.2017, 09:20

Die Rechenergebnisse sind noch die selben, nämlich 2,99999999999999998 (oder Ähnlich) ToInteger schneidet ab, deshalb wird 2 ausgegeben. Die Implizite Stringkonvertierung hat gerundet, weshalb hier 3.000000 ausgegeben wurde. Jens hat das geändert und auch hier einfach (nach der 6. Kommastelle) abschneidet.

Antworten

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