i=1/m; 改为 i = 1.0F / m; 就可以了。因为 1 和 m 是 int 类型的,只有第一次是“1”,以后 m > 1,所以 1/m 的结果是“0”。
public class Nu { public static void main(String args[]) { float sum = 0f,i=1f; for (int n = 1; n <= 20; n++) {
sum = sum + i / factorial(n); } System.out.print("SUM="+sum); } public static int factorial(int ok) { int sum = 1; for (int i = 1; i < ok + 1; i++) { sum = sum * i; } return sum; } } float的长度已经不能体现出10-20的值变化
把m 定义成浮点型 public class Nu { public static void main(String args[]) { int n; double i,m=1.0,sum=0.0; for(n=1;n <=20;n++) { m=m*n; i=1 / m; //System.out.println(i); sum=sum+i;
{
public static void main(String args[])
{
float sum = 0f,i=1f;
for (int n = 1; n <= 20; n++) {
sum = sum + i / factorial(n);
}
System.out.print("SUM="+sum);
} public static int factorial(int ok)
{
int sum = 1;
for (int i = 1; i < ok + 1; i++) {
sum = sum * i;
}
return sum;
}
}
float的长度已经不能体现出10-20的值变化
public class Nu {
public static void main(String args[])
{
int n;
double i,m=1.0,sum=0.0;
for(n=1;n <=20;n++)
{ m=m*n;
i=1 / m;
//System.out.println(i);
sum=sum+i;
}
if(n >=20) System.out.print(sum);
}
}