2017-02-27 85 views
0

我正在嘗試編寫一個簡單的代碼來給出n個和諧系列的總和的輸出。雖然我寫和執行的代碼如下Regd。類型轉換

for(i=1;i<=n;i++) 
    sum = sum + (1/i); 

我不能得到所需的輸出。而同一代碼和平工作的輸出顯示爲我sum = 1.000000如果如下:

for(i=1;i<=n;i++) 
    sum = sum + (1/(float)i); 

實際輸出:sum = 2.283334

任何人都可以請解釋如何這裏的類型轉換影響輸出?

回答

0

計算機認爲(1/i)應該是一個整數。當1除以i時,小數部分被刪除以獲得整數值。由於1/i的結果爲0.xxxx,所以當小數部分被丟棄時,您將剩下0。將i更改爲浮點數將告訴它該數字應該是浮點數。如果您願意,可以使用sum = sum + (1.0/i);獲得類似的結果。

+1

感謝您的解釋。它非常有幫助 – Satish