Cần giải thích về code C++

Em vừa mới tiếp cận C++ và có vấn đề không hiểu. Đây là chương trình của em:

#include <iostream>
using namespace std;
int main()
{
	float temp = 4.95;
	if (temp >= 4.95 && temp <= 10)
	    {
    		cout<<"Dung"<<endl;
    	}
	else if (temp >=0 && temp < 4.95)
	{
		cout<<"Sai"<<endl;
	}
	system("pause");
	return 0;
}

Khi em chạy chương trình thì kết quả lại hiện lên là “Sai”.
Cũng với chương trình đó em gán giá trị lại cho biến temp = 3.95 và thay đổi các điều kiện trong if thì chương trình lại hiện ra “Dung”.

#include <iostream>
using namespace std;
int main()
{
	float temp = 3.95;
	if (temp >= 3.95 && temp <= 10)
	{
		cout<<"Dung"<<endl;
	}
	else if (temp >=0 && temp < 3.95)
	{
		cout<<"Sai"<<endl;
	}
	system("pause");
	return 0;
}

Mong các Anh/chị có thể giải thích giúp em.

Nếu bạn dùng kiểu float thì tất cả các con số làm việc với nó, bạn nên viết kiểu này:

float temp = 3.95f;
if (temp >= 3.95f && temp <= 10.0f)
{
	cout << "Dung" << endl;
}

Không thì mặc định mấy con số đó chuyển sang kiểu double, lại đi so sánh với kiểu float thì mấy điểm cận biên không chính xác đâu.

(3.95f == 3.95); // false

Làm việc với bọn dấu phẩy động này nhức óc lắm :sweat:

Nếu là tiền bạc thì dùng int với đơn vị cent :slight_smile: chứ vầy ko ổn.

1 Like

Em hiểu rui ạ. Cảm ơn vì đã giải thích cho em.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?