Я решал задачу «Подсчитать количество цифр в факториале» и сохранил ответ в двух типах данных int и double. Ответы для обоих типов данных различны, и тот, который хранится в double, наконец-то был правильным. Как это происходит?
Вот код:
int n;
cin>>n;
double ans;
int ans_int;
double digits = 0;
int digit_int = 0;
for (int i = 1; i<=n; i++) {
digits += log10(i);
digit_int += log10(i);
}
ans = floor(digits)+1;
ans_int = floor(digit_int)+1; // This gives wrong answer.
cout<<ans<<endl;
Если в приведенном выше коде я делаю цифры как int, а не как double, я получаю ответ как 1 di git , через 5! вместо 3, в остальных случаях аналогично.