Hallo zusammen
Im angehängten Projekt-File findet Ihr das Makro, welches damit auch gleich getestet werden kann. (Bemerkungen bitte
lesen)
Die Funktion verarbeitet (long) INTEGER sowie FLOAT Datentypen.
ACHTUNG:
im INT-Modus ergibt ein Dividend zwischen 0 und 1 eine Division durch NULL!
Floats werden vor Bearbeitung (im INT-Modus) in INT gewandelt.
Mehr zu Theorie und Mathematik unter folgenden Links:
http://en.wikipedia.org/wiki/Modulo_operation (practical description for computing)
http://en.wikipedia.org/wiki/Modulo (theory with different approaches)
Viel Spass beim 'modulieren'!
Modulo Funktion (math.) in MOD.mak implementiert
Modulo Funktion (math.) in MOD.mak implementiert
- Dateianhänge
-
- MODULO.prj
- (8.61 KiB) 405-mal heruntergeladen
++++++
Gruss/regards IKT
Gruss/regards IKT
Re: Modulo Funktion (math.) in MOD.mak implementiert
Hallo an alle,
Danach ist logischerweise kein vernünftiges Resultat zu erwarten.
Habe das Makro neu überarbeitet und zwar wie folgt:
- Beim Vohandensein von Nachkommastellen, werden diese automatisch abgeschnitten. Aufrunden findet 'nie' statt (dies verhindert die oben beschriebenen Fehler).
- Verkleinerung: von 6 auf 4 Makro-Pin's.
- Positive und negative Zahlen sind an beiden Eingängen möglich, auch beide gleichzeitig. Dies hat zur Folge, dass auch negative Ergebnisse entstehen können (sie sind jedoch mathematisch korrekt).
Die Funktion zur Überprüfung ist wie folgt:
DivR * dvr + MOD = DIV
Entsprechende Vorzeichen berücksichtigen! Nachkommastellen ausser Acht lassen, die interne 'Rechnerei' benutzt NUR Ganzzahlen = Integer / LongInteger.)
Dies war mit der eingebauten Int-Funktion des Math-Bausteins, welcher sich leider, bei nachträglicher Überprüfung als fehlerhaft erwiesen hat. Der Rundungs-Algorithmus bei negativen Zahlen rundet falsch: -3.334 ergibt plötzlich -4 ?!?Floats werden vor Bearbeitung (im INT-Modus) in INT gewandelt.
Danach ist logischerweise kein vernünftiges Resultat zu erwarten.
Habe das Makro neu überarbeitet und zwar wie folgt:
- Beim Vohandensein von Nachkommastellen, werden diese automatisch abgeschnitten. Aufrunden findet 'nie' statt (dies verhindert die oben beschriebenen Fehler).
- Verkleinerung: von 6 auf 4 Makro-Pin's.
- Positive und negative Zahlen sind an beiden Eingängen möglich, auch beide gleichzeitig. Dies hat zur Folge, dass auch negative Ergebnisse entstehen können (sie sind jedoch mathematisch korrekt).
Die Funktion zur Überprüfung ist wie folgt:
DivR * dvr + MOD = DIV
Entsprechende Vorzeichen berücksichtigen! Nachkommastellen ausser Acht lassen, die interne 'Rechnerei' benutzt NUR Ganzzahlen = Integer / LongInteger.)
- Dateianhänge
-
- MOD_int.mak
- Überarbeitetes Modulo Makro
- (2.79 KiB) 341-mal heruntergeladen
++++++
Gruss/regards IKT
Gruss/regards IKT