01/10/2018, 08:33

Em có vấn đề không hiểu về C++ mong anh/chị giải thích giúp em

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.

明玉 viết 10:37 ngày 01/10/2018

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

rogp10 viết 10:40 ngày 01/10/2018

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

Tuyển Nguyễn viết 10:44 ngày 01/10/2018

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

Bài liên quan
0