Java Eclipse结果仅限整数值

Java Eclipse结果仅限整数值,java,Java,这是我的代码,Eclipse总是返回结果的整数值,即使h是双精度的。请帮我把这个修好 public static void main(String[] args) { double h=0.0; for(int i=1;i<=1000;i++) { h=h+ 1/i; } System.out.println("Harmonic sum "+h); System.out.println("Harmonic su

这是我的代码,Eclipse总是返回结果的整数值,即使h是双精度的。请帮我把这个修好

public static void main(String[] args) {
    double h=0.0;

    for(int i=1;i<=1000;i++) {
        h=h+ 1/i;           
    }
    System.out.println("Harmonic sum "+h);
    System.out.println("Harmonic sum "+String.format("%.4f", h));

您需要将除法结果转换为双倍

试试这个:

h=h+ (double)1/i;

我希望这就是您要找的。

您在做int division!用double除法,这与日食的数学无关。将
int
除以
int
,结果是
int
。将其中一个(或两个)操作数强制转换为
双精度
,它将按预期工作<代码>h+=1/(双)i为什么你要回答一个明显重复的问题?如果你必须这样做,请确保你的答案的质量超过大多数重复的答案。转换结果没有帮助,但你编写的代码无论如何都不会按照你说的做。实际上,它将一个操作数,即
1
,强制转换为
double
,然后JLS 5.6.2将另一个操作数
i
提升为
double
,除法在
double
中完成,这一操作有效——但ElliotFrisch更准确、更快速地说明了这一点。
h=h+ (double)1/i;