Modulo în matematică versus programare: Problema numerelor negative
Divergența dintre convențiile modulo din matematică și programare provine din modul în care acestea gestionează împărțirea între întregi. Modulo matematic folosește împărțirea cu rotunjire în jos (rotunjire spre infinitul negativ), astfel încât câtul dintre minus 7 împărțit la 3 se rotunjește în jos la minus 3, dând restul minus 7 minus 3 ori minus 3 egal 2. Modulo în programare folosește împărțirea trunchiată (rotunjire spre zero), astfel încât câtul se trunchiază la minus 2, dând restul minus 7 minus 3 ori minus 2 egal minus 1.
Python folosește în mod unic modulo matematic (rotunjit în jos), potrivindu-se cu convenția așteptată în algebră abstractă și teoria numerelor. C, C++, Java, JavaScript, Go și Rust folosesc modulo trunchiat. Ruby și Perl respectă comportamentul lui Python.
Această distincție contează în codul real: conversia unui unghi negativ la intervalul 0-359 necesită modulo matematic (minus 90 mod 360 egal 270), dar operatorul procent din C dă minus 90, necesitând o ajustare manuală.