在 Java 中计算 1 到 50000 的数字在两个方向上的谐波和时,获得的值必须匹配,但令我大吃一惊的是它们不匹配!请告诉我为什么会这样。
public class Main {
public static void main(String args[]){
int maxD = 50000;
double suml2r=0, sumr2l=0;
for(int i=1; i<=maxD; i++){
suml2r += (double)(1)/i;
sumr2l += (double)(1)/(maxD-i+1);
}
System.out.println("left to right = " + suml2r);
System.out.println("right to left = " + sumr2l);
}
}
输出:
从左到右 = 11.397003949278504
从右到左 = 11.397003949278519