本帖最后由 huang_hzhi 于 2014-09-19 17:33:03 编辑

解决方案 »

  1.   

    把s=s+1/j;改成s=s+1.0/j;,因为j是int型,1/j也是int,因此如果j>1的话,1/j就是0,而不是我们希望的小数。如果改成1.0/j,因为1.0是小数,会把int类型的j自己提升为double,这样算出来就是小数了。
      

  2.   

    j已经定义成double类型了,所以1/j结果还是double类型的,楼主主要是j=j*i;这一句最后导致j不是1、2、3、4、5...这样的顺序的,所以导致第三步开始就和期望的不一样了
      

  3.   

    厄……看错楼主的题目了,把题目看成计算1+1/2+1/3...这样了。如果是1+1/2!+1/3!...这样的话,楼主的结果是没有问题的,到第三步时,3!=3*2*1=6,1/6.0=0.16666666,所以s=s+1/j=1.5+1.66666666666,所以结果就是贴出来的那样了