30/09/2018, 18:06

Tại sao giá trị của biến c khi in ra màn hình lại là 1.00000000. Trong khi em đã khai báo c là float, đáng lẽ phải ra 1,333333333

int a=4; int b=3;
float c;
c= a/b;
printf("Gia tri cua c la: %f",c);
return 0;

Em đang tự học lập trình C, em là newbie. Cho nên em xin hỏi các anh chị là tại sao giá trị của c khi in ra màn hình lại là 1.00000000. Trong khi em đã khai báo c là float, đáng lẽ phải ra 1,333333333

Mong các anh giải đáp dùm em

Itachi Citus viết 20:09 ngày 30/09/2018

Nó sẽ thực hiện theo hai bước:

  • Đầu tiên là phép chia /.
  • Chia xong mới thực hiện phép gán =.

Do đó, khi thực hiện phép chia - ở đây là phép chia hai số int -> kết quả là int 1. Kết quả int 1 này sau đó mới thực hiện phép gán =, ép kiểu chuyển sang float thành float 1.00000.
Để đảm bảo đúng kết quả về float, ít nhất một thành phần trong biểu thức phải là float. Bạn có thể làm như sau:

c = (a * 1.0) / b;
Lê Viết Hưng viết 20:09 ngày 30/09/2018

Cảm ơn anh đã giải thích rất rõ về caí này . Anh giải thich rất kỹ càng chi tiết ^^. Em đã hiểu vấn đề rồi ạ.

Bài liên quan
0