为啥n要为double时才能运行正确,而int不能

为什么n要为double时才能运行正确,而int不能?#include stdafx.h#include stdio.h#include math.hint

为什么n要为double时才能运行正确,而int不能?
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
int main(int argc, char* argv[])
{double y,n,t;
int i,s;
y=0;t=1;i=1;n=1;s=1;
while(fabs(t)>=1e-18) 
{y=y+t;
i++;
n=n*i;
s=-s;
t=s/n;
printf("第%d次:Y=%20.18f\n",i,y);
}
return 0;
}
[解决办法]
应该是t=(double)s/n;  n可以不是double
[解决办法]
s是int型,如果n也是int型那么(s / n)就默认进行整数除法,t也就为整数.
例如 t = 3 / 5, 则t = 0; 若 t = 3.0 / 5,或t = 3 / 5.0 则t = 0.6
[解决办法]
都用double好了
[解决办法]
s或n乘以1.0就可以了。