TIA modulo liefert falsches Ergebnis (V16)

Zuviel Werbung?
-> Hier kostenlos registrieren
Verstehe ich jetzt nicht.
Hab das mal schnell in eine Steuerung geladen.


12 MOD 5 = 2
-12 MOD 5 = -2 ----> also 3 wenn man 5 zum Ergebnis hinzuzählt
Wenn man das jetzt vorher macht, dann ist da doch kein Unterschied.
Die Zahlen -7, -2, 3, 8, 13 werden auch alle das Ergebnis 3 bringen.
Also vorher eventuell mehrmals addieren oder nachher einmal. Da sehe ich keinen Unterschied.
 
Das "Vorher addieren" dient ja dazu, das Ganze in einer Einzeilerformel auszudrücken anstatt nachher mit IF THEN zu korrigieren.
Obwohl man auch in so einer Formel nachher addieren kann:
Code:
Destination := ((currentPos + Distance) MOD ArraySize + ArraySize) MOD ArraySize;
Diese Formel liefert auch für "currentPos+Distance < -ArraySize" das gewünschte Ergebnis, hat aber doch einen deutlichen Overhead für die anderen Fälle.
In vielen Anwendungen kann man diesen Sonderfall ausschliessen, und dann ist
Code:
Destination := (currentPos + Distance + ArraySize) MOD ArraySize;
halt deutlich einfacher.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin funkey,

1. 2 mod 5 = 2
2. (-2 + 5) mod 5 = 3
3. -2 mod 5 = -2 + 5 = 3

Zeile 1: kein Problem
Zeile 2: kein Problem
Zeile 3: Nachbehandlung des Ergebnisses nötig. Aber genau das sollte ja vermieden werden

VG

Mario
 
Zurück
Oben