MySQL không mang lại cho bạn một kết quả không có thật, nó chỉ đơn giản là sử dụng một cách triển khai mô-đun khác với những gì bạn đang mong đợi. Thật không may, thuật ngữ mô-đun dường như đã được định nghĩa hơi mơ hồ và việc triển khai nó khác nhau giữa các ngôn ngữ. Từ những gì tôi có thể nói trong Wikipedia trên Modulo , Triển khai của MySQL đang sử dụng phân chia cắt ngắn :
r = a - n * trunc(a / n)
Nơi bạn đang mong đợi việc triển khai sử dụng phân chia tầng :
r = a - n * floor(a / n)
Vì đây là cách bạn triển khai giải pháp đầu tiên của mình, tôi muốn nói rằng nó có lẽ là giải pháp thay thế tốt nhất cho Mod
nhà điều hành.
Từ những gì tôi đã thấy (và đây là một phân tích phi khoa học rất nhanh!), Có vẻ như nhiều ngôn ngữ lập trình bắt buộc hơn thực hiện phân chia cắt ngắn và các ngôn ngữ toán học chức năng khác dường như sử dụng phép chia có lớp .