package test;
public class text2 {
public static void main(String[] args) {
double sum=0;
for(int i=1;i<=5;i++) {
if(i%2==0) {
sum=sum-1/i;
}else {
sum=sum+1/i;
}
}
System.out.println(sum);
}
}
这输出怎么总是1.0?
因为1/i = 0;//当 i 1,2,3,4,5时 1/i = 0;这个你懂吧,1%i 在i 为1,2,3,4,5 都为 1
sum = sum + 0;
sum = sum - 0;
所以后来就没变过
sum=sum-1/(double)i;
sum=sum+1/(double)i;
因为i是整数,所以1/i是整除
把i的数据类型改为double就好了
for(double i=0;i<5;i++)
输出1.0是因为楼主你写的sum是double类型,故输出肯定是浮点数(即带小数点的)。而结果是1.0是因为你的运算
sum=sum-1/i;这句代码只有偶数可以进来,1/i因为i是一个整数,所以求出的结果也会是一个整数,当你把2代进去的时候,其实1/i得到的是0,这里的sum值没有变化。
同理sum=sum+1/i;这里只有第一次i=1时,1/i得到1,后面的奇数1/i都是0,故sum只在i=1的时候值加了1,其它4个数都加减了0.
要改的话:
要输出整形可以把sum声明为int类型
我想楼主应该是少了一个小括号吧sum=(sum-1)/i;如果是这样的话,那sum就必须得是double型了。
在i上乘1.0就可以了
哦 1/1 = 1;更正一下;嘻嘻