Modulo Matematika vs Pemrograman: Masalah Angka Negatif
Perbedaan antara konvensi modulo matematika dan pemrograman berasal dari cara keduanya menangani pembagian bilangan bulat. Modulo matematis menggunakan pembagian lantai (pembulatan ke arah tak hingga negatif), sehingga hasil bagi negatif 7 dibagi 3 dibulatkan ke bawah menjadi negatif 3, menghasilkan sisa negatif 7 dikurangi 3 kali negatif 3 sama dengan 2. Modulo pemrograman menggunakan pembagian terpotong (pembulatan ke arah nol), sehingga hasil bagi dipotong menjadi negatif 2, menghasilkan sisa negatif 7 dikurangi 3 kali negatif 2 sama dengan negatif 1.
Python secara unik menggunakan modulo matematis (lantai), yang cocok dengan konvensi yang diharapkan dalam aljabar abstrak dan teori bilangan. C, C++, Java, JavaScript, Go, dan Rust menggunakan modulo terpotong. Ruby dan Perl mengikuti perilaku Python.
Perbedaan ini penting dalam kode nyata: mengonversi sudut negatif ke rentang 0-359 memerlukan modulo matematika (negatif 90 mod 360 sama dengan 270), tetapi operator persen C menghasilkan negatif 90, yang memerlukan penyesuaian manual.