2017-11-23 10 views
0

これは私のコードですが、Eclipseは常にhが倍数であっても結果の整数値を返します。これを解決するために私を助けてください。Eclipseの結果の整数値のみ

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; 

を私はこれがあると思います:あなたはこれを試してみてダブル

にあなたの除算の結果をキャストする必要が

Harmonic sum 1.0 
Harmonic sum 1,0000 
+0

あなたはint divisionをやっています!倍精度で除算する –

+0

これはEclipseとは何も関係ありません** –

+0

整数の計算です。 'int'を' int'で分割すると、結果は 'int'になります。オペランドの1つ(または両方)を 'double 'にキャストすると、期待どおりに動作します。 'h + = 1 /(double)i;' –

答えて

-1

あなたが探していたもの

+0

なぜ重複した質問に答えるのですか? –

+0

あなたがそうする必要がある場合は、答えの質が重複回答の大部分を上回ることを確認してください。 –

+0

結果をキャストすることは役に立ちませんが、あなたが書いたコードは、とにかくあなたが言うことをしません。実際には1つの_operand_、 '1'を' double'にキャストし、JLS 5.6.2はもう一方のオペランド 'i'を' double'に昇格させ、分割は 'double'で行われますが、より正確にすぐにElliotFrischによって述べられました。 –

関連する問題