Các toán tử chia là đặc biệt. Có một sự khác nhau lớn giữa chi a một số nguyên và chia một số dấu phẩy động. Trong chia một số nguyên, kết quả bị cắt đi (bất kể phần thuộc phân số bị ngắt đi). Ví dụ, chia số nguyên giá trị của 19/10 là 1.
Nếu cả số chia và số bị chia cùng là số dấu phảy động, thì phép chia dấu phảy động đợc thực hiện. Trong trờng hợp này 19.0/10.0 là 1.9 ( 19/10.0 và 19.0/10 cũng là các phép chia dấu phảy động; tuy nhiên, phép chia 19.0/10.0 đợc rõ ràng hơn.) Có một vài ví dụ trong bảng 4-2.
Bảng 4-2. Các ví dụ về biểu thức
Biểu thức Kết quả Kiểu kết quả
1 + 2 3 Số nguyên
1.0 + 2.0 3.0 Số dấu phảy động
19/10 1 Số nguyên
19.0/10.0 1.9 Số dấu phẩy động
C++ cho phép gán một biểu thức số nguyên cho một biến số dấu phẩy động. Nó sẽ tự động chuyển từ dạng số nguyên về số dấu phẩy động và thực hiện phép gán này. Một chuyển đổi giống nh thế khi gán một số dấu phẩy động vào một biến nguyên. Các số dấu phẩy động đợc làm tròn khi gán cho các biến số nguyên.
Ví dụ 4-3. Float1/float1.c
Int integer; // an integer
Float floating; // a floating point number Main()
{
floating = 1.0 / 2.0; // assign floating 0.5 integer = 1 / 3; // assign integer 0
floating = (1 / 2) + (1 / 2); // assign floating 1.0 floating = 3.0 / 2.0; // assign floating 1.5 integer = floating; // assign integer 1 return(0);
}
Chú ý rằng biểu thức 1 / 2 là biểu thức số nguyên, phép chia một số nguyên cho một số nguyên, kết quả là một số nguyên (là 0).
Câu hỏi 4-2: Tại sao ví dụ 4-4 in ra "the value of 1/3 is o"? Phải làm gì đối với chơng trình để sửa chúng?
Ví dụ 4-4. Float2/float2.cc
#include <iostream.h>
float answer; // the result of the divide main()
{
answer = 1 / 3;
cout <<"The value of 1/3 is " << answer << "\n"; return(0);
}