Ansi C: factorial function wrong a -


i wrote code calculate result of 100!, function stops giving correct answer after 22! here's code. assignment calculate sum of digits of 100!, code giver incorrect answers after 22!

/*calculates factorial of given number*/ double factorial(double num);  /*calculates how many digits in number*/ int num_digits(double num);  int main (int argc, char *argv[]) {   double ans = factorial(23);   int num = num_digits(ans);    printf("%lf\n", ans);   printf("%d\n", num);   char x[num];    //convert number returned factorial() char array   sprintf (x, "%lf", ans);    int = 0;   int sum= 0;    (i = 0; < num; ++) {     sum += x[i] - '0';   }    printf("--\n%d\n", sum);     return 0; }  double factorial(double num) {   int i;   double sum = 1;    /*heel simpel, gwn 1 x sum, sum * sum - 1 enz..*/   (i = num; > 0; --) {     sum *= i;   }    return sum; } 

22! 10^21, 2^63. means, can calculate 22! on 64 bit machine using normal arithmetic, not more because integer overflow, , result garbage. had use special library provides arithmetic larger numbers.


Comments