Toán tử modulo
Thuộc phần Kiến thức nền tảng trong hành trình C++ của Coddy. Bài học 17 trên 74.
Toán tử modulo (modulo operator) % cho biết số dư của phép chia. Trong C++, toán tử này dùng cú pháp đơn giản:
result = dividend % divisor;- dividend: Số bị chia.
- divisor: Số chia.
- result: Số dư của phép chia.
Ví dụ:
result = 10 % 3;Ở đây, 10 được chia cho 3. 3 chia vào 10 được ba lần, dư 1. Vì vậy, result sẽ là 1.
Thông thường, phép modulo được dùng để kiểm tra một số là chẵn hay lẻ:
- Nếu một số là số chẵn, chia số đó cho 2 sẽ có số dư bằng 0.
- Nếu một số là số lẻ, chia số đó cho 2 sẽ có số dư bằng 1, hoặc -1 khi số đó là số âm.
Khi làm việc với số dấu phẩy động (số double) trong C++, bạn không thể dùng trực tiếp toán tử modulo %. Thay vào đó, bạn cần dùng hàm fmod() từ thư viện <cmath>. Hàm này hoạt động tương tự toán tử modulo nhưng vẫn giữ độ chính xác của phần thập phân. Ví dụ:
#include <cmath>
double result = fmod(5.2, 2.0);
// result là 1.2Cách hoạt động như sau: 2.0 chia hết vào 5.2 được hai lần (4.0), phần dư là 1.2 (5.2 - 4.0 = 1.2).
Một ví dụ khác:
double result = fmod(7.8, 3.5);
// result bằng 0.8Khi số chia lớn hơn số bị chia, kết quả bằng số bị chia. Điều này áp dụng cho cả % và fmod().
5 % 10 = 5
3 % 7 = 3
fmod(2.5, 8.0) = 2.5Tại sao? Số chia chia được 0 lần, nên toàn bộ số bị chia là số dư.
Thử thách
Người mớiViết code để khởi tạo ba biến, a (int), b (double) và c (int) với các giá trị lần lượt là 9, 2.6 và 11.
Sau đó, khởi tạo các biến sau:
d (int)sẽ lưu kết quả phép chia lấy dưacho2e (int)sẽ lưu kết quả phép chia lấy dưacho3f (double)sẽ lưu kết quả phép chia lấy dưbcho1.5g (double)sẽ lưu kết quả phép chia lấy dưbcho3.9h (int)sẽ lưu kết quả phép chia lấy dưccho10
Xem kết quả và quan sát cách số bị chia và số chia khác nhau ảnh hưởng đến kết quả.
Tự làm thử
#include <iostream>
#include <cmath>
int main() {
// Viết code của bạn bên dưới
// Đừng thay đổi dòng bên dưới
std::cout << "a = " << a << std::endl;
std::cout << "b = " << b << std::endl;
std::cout << "c = " << c << std::endl;
std::cout << "d = " << d << std::endl;
std::cout << "e = " << e << std::endl;
std::cout << "f = " << f << std::endl;
std::cout << "g = " << g << std::endl;
std::cout << "h = " << h << std::endl;
return 0;
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
4Các toán tử, phần 1
Toán tử số họcToán tử moduloTăng/giảmTăng/giảm sauRút gọn phép toán số họcToán tử so sánhSo sánh chuỗiTự luyện tập: Trình biên dịch C++ online