Modul einer wirklich sehr langen Zahl (fmod)

Ich möchte die Anzahl der Nullen in einer Fakultät mit Cpp finden. Das Problem ist, wenn ich wirklich große Zahlen verwende.

<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>

Ich denke, das Problem hier ist das

fmod (Fakt, Nenner) gibt mir die richtige Antwort für Fakultät von 22 und Nenner als 10.00 (das ist 0,000). Aber es gibt mir die falsche Antwort für Fakultät von 23 und Nenner als 10.00

Antworten auf die Frage(1)

Ihre Antwort auf die Frage