Fehler in ToInteger() Funktion
Moderator: Co-Administratoren
Fehler in ToInteger() Funktion
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?
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?
Re: Fehler in ToInteger() Funktion
Das hatten wir schon mal:
viewtopic.php?f=19&t=38731
viewtopic.php?f=19&t=38731
sehr selten im Forum
Re: Fehler in ToInteger() Funktion
Die aktuellste: 2.29.22Cash hat geschrieben:Welche Firmware nutzt Du?
Ausser CuXD auch keine anderen "Schweinereien"/Mods drauf.
Re: Fehler in ToInteger() Funktion
Da ist die ReGa-Version in der Standard- und Community-Ausführung die 0116.ruler42 hat geschrieben:Die aktuellste: 2.29.22
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.
.
Re: Fehler in ToInteger() Funktion
Ja, Du hast es richtig erkannt und deshalb schrieb ich:Bulli hat geschrieben:Gruß
Bulli
Und anstatt dass es besser geworden wäre, sind jetzt die Rechenergebnisse noch schlimmer.BadenPower hat geschrieben:Ab Beta-0120 sollte der Fehler wieder beseitigt sein.
.
Re: Fehler in ToInteger() Funktion
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.
Das sich was an der Berechnung geändert hat, daran kann ich mich nicht erinnern.
sehr selten im Forum
Fehler in ToInteger() Funktion
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.