#include <stdio.h>
int main()
{
float diem=3.6;
if (diem==3.6) printf("Xuat sac");
return 0;
}
bạn nào cho mình hỏi như thế nào lại không in ra gì là sai chỗ nào nhỉ ??
#include <stdio.h>
int main()
{
float diem=3.6;
if (diem==3.6) printf("Xuat sac");
return 0;
}
bạn nào cho mình hỏi như thế nào lại không in ra gì là sai chỗ nào nhỉ ??
Không nên so sánh trực tiếp số thực.
P/s: Lần sau thêm tag, category đầy đủ, đề title rõ ràng. Không cần phải thêm [...] vào trước câu hỏi.
thế nên so sánh như thế nào nhỉ ? mình không biết bạn chỉ mình hộ đc ko 
bool eq(float a, float b) {
return abs(a - b) < eps; // nếu hiệu của a và b nhỏ hơn 1 số rất bé
// thì coi như chúng bằng nhau.
// Nên đặt eps = 1e-9.
}
mình so sánh với 2.5 3.5 thì được nhưng 2.4 hay 2.6 ,… thì không được. tại sao vậy nhỉ ?
Do số thực có sai số, nên không nên/được so sánh trực tiếp 2 số thực.
eq(a,b) trả về =0 là bằng nhau thế như thế nào thì lớn hơn thế nào là nhỏ hơn nhỉ ?
(a > b) -> (a - b) > eps
(a < b) -> (b - a) > eps
3.6 != 3.6f. https://ideone.com/9iIOxW
0.5 == 0.5f rồi, lí do là vì đằng nào chả viết là 0.1b (binary).
p/s: đọc thêm: http://diendan.congdongcviet.com/threads/t396988::lieu-co-phai-compiler-bi-loi-so-sanh.cpp?p=905876#post905876
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?