Модуль действительно очень длинного числа (fmod)

Я хочу найти количество нулей в факториале, используя Cpp. Проблема в том, что я использую действительно большие числа.

<code>#include <stdio.h>
#include <math.h>

long zeroesInFact(long n)
{
long double fact=1;
long double denominator=10.00;
long double zero=0.0000;
long z=0;
printf("Strating loop with n %ld\n",n);
for(int i=2;i<=n;i++)
{
    fact=fact*i;
    printf("Looping with fact %LF\n",fact);
}
printf("Fmod %lf %d\n",fmod(fact,denominator),(fmod(fact,denominator)==zero));
while(fmod(fact,denominator)==zero)
{
    fact=fact/10;
    z++;
}
printf("Number of zeroes is %ld\n",z);
return z;
}

int main()
{
long n;
long x;
scanf("%ld",&n);
for(int i=0;i<n;i++)
{
    scanf("%ld",&x);
    printf("Calling func\n");
    zeroesInFact(x);
}
return 0;
}
</code>

Я думаю, что проблема здесь в том, что

FMOD (факт, знаменатель) дает мне правильный ответ для факториала 22 и знаменателя как 10,00 (что составляет 0,000). Но это дает мне неправильный ответ для факториала 23 и знаменателя как 10.00

Ответы на вопрос(1)

Ваш ответ на вопрос