【发布时间】:2012-01-21 21:47:37
【问题描述】:
我应该编写一个 Java 程序来总结以下序列:1.0/1.0 + 1.0/2.0 + 1.0/3.0.... + 1.0/15,000,000.0 从 1.0/15,000,000.0 开始按升序排列,然后再按降序排列+ 1.0/14,999,999 一直到 1.0/1.0 使用 32 位浮点。我正在努力弄清楚如何做到这一点,但这是我到目前为止所拥有的(不知道它是否会起作用):
编辑:很抱歉打开这个东西,但我得到的两个答案都是 1.0,我很确定这是不正确的。有谁知道我做错了什么?
public class FloatSum {
public static float increasingSum (float numbers1){
float sum1 = 0;
for (int i = 1; i <= 15000000; i++){
sum1 = sum1 + 1/i;
}
return sum1;
}
public static float decreasingSum (float numbers2){
float sum2 = 0;
for (int i = 15000000; i >= 1; i--){
sum2 = sum2 + 1/i;
}
return sum2;
}
public static void main(String[] args) {
float sum1 = 0;
float sum2 = 0;
System.out.println(increasingSum(sum1));
System.out.println(increasingSum(sum2));
}
}
【问题讨论】:
-
如果我对问题的理解正确,您真的在最后添加
2/1 + 2/2 + 2/3 + ... + 2/14999999+1/15000000。 -
1/i进行整数除法,因此结果始终为 0。 -
不错的收获。我将“int i = 1”更改为“float i = 1”,现在两个答案都变为无穷大。我还需要改变什么?提前致谢。
标签: java floating-point sum