i have the following simple program to calculate factorials.
Code:
#include <stdio.h>
#include <stdlib.h>

double Factorial( int );
double Fact( int );

int main()
{
    int x = 24;
    double AnswerOne = Factorial( x );
    double AnswerTwo = Fact( x );

    printf("%lf\n", AnswerOne);
    printf("%lf\n", AnswerTwo);

    return 0;
}

double Factorial( int number )
{
    if ( number == 1 )
        return 1;

    return number * Factorial( number - 1 );
}

double Fact( int Num )
{
  double Answer = 1;

  while (Num != 0)
    Answer *= Num--;

  return Answer;
}
Up to 24! the answers agree but after that they differ Is it the way floating points are stored that causes the error?