Tại sao fmod((log10(a)/log10(5)), 1) lại bằng 1?

Mình đang làm bài:

#include<iostream>
#include<cmath>
bool m5k(int &a) {
	if (fmod((log10(a)/log10(5)), 1) == 0) { // a = 125 -> dk = 1 ?
		return 1;
	}
	return 0;
}

int main() {
	int arr[] = {125, 625, 15, 98189, 5, 125, 48, 125, 25};
	int n = sizeof(arr) / sizeof(arr[0]);
	for (int i = 0; i < n; i++) {
		if (m5k(arr[i]) == 1) {
			std::cout << arr[i] << std::endl;
			break;
		}
	}
}

làm một lúc mới phát hiện đk của hàm lại ra 1, tại sao lại không phải là 0?

Sao lại đi hỏi người khác về chính logic của bài bạn làm?

3 Likes

Là do bạn code sai, nếu bạn code đúng mà kết quả vẫn ra sai thì chỉ có thể là

  1. Compiler trên máy của bạn bj lỗi
  2. Màn hình bị hư nên hiển thị sai
  3. OS lỗi UI
  4. Chip xử lý trên máy tính bị lỗi
    … và 1 đống nguyên nhân vớ vẫn khác

nếu bạn code sai thì bạn tự kiểm tra lại từng bước để biết sai chỗ nào thôi

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