Modulo Matematik vs Pengaturcaraan: Masalah Nombor Negatif
Perbezaan antara konvensyen modulo matematik dan pengaturcaraan terhasil daripada cara ia mengendalikan pembahagian integer. Modulo matematik menggunakan pembahagian lantai (membundar ke arah infiniti negatif), jadi hasil bahagi negatif 7 bahagi 3 dibundarkan ke bawah kepada negatif 3, memberikan baki negatif 7 tolak 3 darab negatif 3 sama dengan 2. Modulo pengaturcaraan menggunakan pembahagian terpotong (membundar ke arah sifar), jadi hasil bahagi dipotong kepada negatif 2, memberikan baki negatif 7 tolak 3 darab negatif 2 sama dengan negatif 1.
Python menggunakan modulo matematik (lantai) secara unik, memadankan konvensyen yang dijangkakan dalam algebra abstrak dan teori nombor. C, C++, Java, JavaScript, Go, dan Rust menggunakan modulo terpotong. Ruby dan Perl sepadan dengan tingkah laku Python.
Perbezaan ini penting dalam kod sebenar: menukar sudut negatif kepada julat 0-359 memerlukan modulo matematik (negatif 90 mod 360 sama dengan 270), tetapi operator peratus C memberikan negatif 90, memerlukan pelarasan manual.