Trong lý thuyết số, kết quả luôn dương. Tôi đoán rằng điều này không phải luôn luôn như vậy trong ngôn ngữ máy tính bởi vì không phải tất cả các lập trình viên đều là các nhà toán học. Hai xu của tôi, tôi sẽ coi nó là một khiếm khuyết thiết kế của ngôn ngữ, nhưng bạn không thể thay đổi nó ngay bây giờ.
= MOD (-4.180) = 176 = MOD (176, 180) = 176
vì 180 * (-1) + 176 = -4 giống như 180 * 0 + 176 = 176
Sử dụng ví dụ đồng hồ ở đây, http://mathworld.wolfram.com/Congruence.html bạn sẽ không nói duration_of_time mod cycle_length là -45 phút, bạn sẽ nói 15 phút, mặc dù cả hai câu trả lời đều thỏa mãn phương trình cơ sở.
Nguồn
2016-06-09 22:14:54
Không có hành vi mô-đun "đúng" khi xử lý các số âm - nhiều ngôn ngữ làm theo cách này, nhiều ngôn ngữ làm khác nhau và một vài ngôn ngữ làm điều gì đó hoàn toàn khác. Ít nhất hai người đầu tiên có ưu và khuyết điểm của họ. – delnan
điều này thật kỳ lạ đối với tôi. tôi nghĩ rằng nó chỉ nên trả về âm nếu b là âm. – fent
có thể trùng lặp của [Làm thế nào để thực hiện các phép tính modulus với số âm?] (Http://stackoverflow.com/questions/4403542/how-does-java-do-modulus-calculations-with-negative-numbers) –