?MOD(9/10) && liefert 9 -> 0 Rest 9
?MOD(-9/10) && liefert 1 -> x Rest 1 ??????
Woher kommt bei der zweiten Zeile das Ergebnis 1?
Grundsätzlich gilt, das bei der Modulo-Berechnung alle Zahlen in 'Blöcke' von 0 bis 9 eingeordnet werden:
...
0 => Block 0
1 => Block 1
2 => Block 2
3 => Block 3
4 => Block 4
5 => Block 5
6 => Block 6
7 => Block 7
8 => Block 8
9 => Block 9
10 => Block 0
11 => Block 1
...
Wird diese Vorgehensweise ins negative geführt, so ist zu erkennen, dass die -1 im Block 9 steht, da dieser immer vor Block 0 kommt:
...
-9 => Block 1
-8 => Block 2
-7 => Block 3
-6 => Block 4
-5 => Block 5
-4 => Block 6
-3 => Block 7
-2 => Block 8
-1 => Block 9
0 => Block 0
1 => Block 1
2 => Block 2
3 => Block 3
4 => Block 4
5 => Block 5
6 => Block 6
...
Etwas anders erklärt:
Die MOD()-Funktion gibt den Rest an, der bei einer ganzzahligen Division entsteht. Dass bei 18 MOD 10 als Ergebnis 8 herauskommt, ist sofort einsichtig. Bei negativen Zahlen verhält es sich ebenso, wie an der oben angezeigten Blocklogik zu erkennen ist. Wird -8 durch 10 geteilt, so geht die 10 eben null Mal in die -8. Von der nächstkleineren (!) Zahl, die durch 10 teilbar ist (das wäre die -10), sind wir 2 Stellen entfernt. Somit ist -8 MOD 10 = 2.
Keine Kommentare:
Kommentar veröffentlichen