Giá trị trả về của Return

Mọi người cho mình hỏi: khi mình nhập n=2 vào thì s=1.5 mình cũng đã thử cout << s;
ra là được 1.5 nhưng tại sao khi return s; thì nó chỉ hiện ra 1 chứ không phải 1.5.

#include <iostream>

int TinhTong_2(int x) {
	double s = 0;
	while (x > 0) {
		s = s + double(1) / x;
		x--;
	}
	return double(s);
}

int main() {
	int n;
	std::cin >> n;

	std::cout << TinhTong_2(n);

	return 0;
}

tôi k biết code c++, nhưng tôi nghĩ nguyên nhân do lỗi cú pháp của việc ép kiểu
Tôi thấy cú pháp này hơi lạ lạ, bạn thử thay 2 dòng này

thành:
s = s + (double) 1/x;
return (double) s; //mà chỗ này theo tôi cũng k cần ép kiểu.
=> Bạn kiểm tra lại và xin feedback

1 Like

Vì giá trị trả về của hàm TinhTong_2 là int chứ không phải double nên nó trả về int thôi.
Bạn thay int bằng double là được.

double TinhTong_2(int x) {...}

Edit: góp ý thêm là tham số bạn truyền vào là double luôn thì lúc sau đỡ phải ép kiểu.

double TinhTong_2(double x) {
	double s = 0;
	while (x > 0) {
		s += 1 / x;
		x--;
	}
	return s;
}
3 Likes

Do Tran Mình không nghĩ là sai ở phần phép toán đó, bởi vì khi mình thử dùng cout << s; ngay trong hàm đó thì nó hiện ra 1.5 vậy thì nó tính đúng rồi.
Còn sai ở đây Flambo Me-mow phía dưới góp ý thì mình có sửa và đúng rồi.

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