Tại sao giải quyết lỗi tự làm tròn số thực

Xin chào mọi người, em mới học lập trình nên không biết tại sao em khai báo kiểu double nhưng khi nhập số thập phân thì nó tự làm tròn rồi tính kết quả, làm ra kết quả sai (em dùng visual 2017 c++ ạ).

#include <conio.h>
#include <math.h>

int main()
{
	double W, H, BMI;
	printf("Nhap khoi luong:");
	scanf_s("%lf", &W);
	printf("Nhap chieu cao:");
	scanf_s("%lf", &H);
	BMI = W / (pow(H, 2));
	printf("BMI=%.2lf\n", BMI);
	if (BMI < 18.5)
		printf("Nguoi gay");
	else if (BMI >= 18.5&&BMI < 25)
		printf("Nguoi binh thuong");
	else if (BMI >= 25 && BMI <30)
		printf("Nguoi beo phi do I");
	else if (BMI >=30 && BMI <= 40)
		printf("Nguoi beo phi do II");
	else
		printf("Nguoi beo phi do III");
	_getch();
	return 0;
}

tăng số lượng ký tự sau dấu phẩy lên xem?
Cái này phải ép kiểu không là nó sẽ nhận cái W với pow(H,2) là số nguyên.
Nhớ ko nhầm thì phép / là dành cho 2 số nguyên thì phải.

BMI = W / (pow(H, 2));
1 Like

cám ơn anh, để e thử xem

kết quả vẫn vậy, còn cách khác không vậy anh

Sao bạn ko viết là H*H :smiley:

Hàm pow này nó ko chính xác cho lắm.

2 Likes

đã thử rồi . cũng z.

image
chạy bên code blocks thấy ok nhé.

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