Modulo στα Μαθηματικά έναντι Προγραμματισμού: Το Πρόβλημα των Αρνητικών Αριθμών
Η απόκλιση μεταξύ των συμβάσεων modulo στα μαθηματικά και τον προγραμματισμό πηγάζει από τον τρόπο με τον οποίο χειρίζονται την ακέραια διαίρεση. Το μαθηματικό modulo χρησιμοποιεί διαίρεση με στρογγυλοποίηση προς τα κάτω (στρογγυλοποίηση προς το αρνητικό άπειρο), οπότε το πηλίκο του αρνητικού 7 δια του 3 στρογγυλοποιείται προς τα κάτω στο αρνητικό 3, δίνοντας υπόλοιπο αρνητικό 7 μείον 3 επί αρνητικό 3 ίσον 2. Το modulo προγραμματισμού χρησιμοποιεί διαίρεση με αποκοπή (στρογγυλοποίηση προς το μηδέν), οπότε το πηλίκο αποκόπτεται στο αρνητικό 2, δίνοντας υπόλοιπο αρνητικό 7 μείον 3 επί αρνητικό 2 ίσον αρνητικό 1.
Η Python χρησιμοποιεί αποκλειστικά το μαθηματικό modulo (με στρογγυλοποίηση προς τα κάτω), ταιριάζοντας με τη σύμβαση που αναμένεται στην αφηρημένη άλγεβρα και τη θεωρία αριθμών. Οι C, C++, Java, JavaScript, Go και Rust χρησιμοποιούν modulo με αποκοπή. Η Ruby και η Perl ακολουθούν τη συμπεριφορά της Python.
Αυτή η διάκριση έχει σημασία στον πραγματικό κώδικα: η μετατροπή μιας αρνητικής γωνίας στο εύρος 0-359 απαιτεί μαθηματικό modulo (το αρνητικό 90 mod 360 ισούται με 270), αλλά ο τελεστής ποσοστού της C δίνει αρνητικό 90, απαιτώντας χειροκίνητη ρύθμιση.