差一点就对了的100的阶乘问题
public class Factorial
{
static void Main()
{
int[] data = new int[200];
int digit = 1;//位数
data[1] = 1;
for (int i = 1; i <= 100; i++)
{
for (int j = 1; j < digit + 1; j++)
{
data[j] *= i; //先做每一位与i的乘积放在一个数组空间中
}
for (int j = 1; j <= 100; j++)
{
if (data[j] > 9)
{
for (int r = 1; r < digit+1; r++)
{
if (data[digit] > 9)
{
digit++;
}
data[j + 1] += data[j] / 10;
data[j] %= 10;
}
}
}
Console.Write("{0}!=", i);
for (int k = digit; k > 0; k--)
{
Console.Write(data[k]);
}
Console.Write("\n");
}
Console.ReadKey();
}
======================================================
这段代码在运行到71!的时候结果就开始不正确,第一位数为0,我想可能是位数的问题。但没找出来,高手们帮忙看看。