首頁 >後端開發 >C++ >為什麼 C 中的整數除法儲存在 Double 變數中時結果為零?

為什麼 C 中的整數除法儲存在 Double 變數中時結果為零?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-03 11:35:10997瀏覽

Why Does Integer Division in C   Result in Zero When Stored in a Double Variable?

整數除法在雙變量中產生令人驚訝的零

在嘗試計算簡單除法(3/5)時,您可能會遇到意想不到的結果。儘管將結果儲存在雙精度變數中,但結果可能會不穩定地顯示為零。為了解開這個謎團,讓我們研究一下底層機制:

在提供的程式碼片段中,被除數 (3) 和除數 (5) 都是整數。預設情況下,C 將此除法解釋為整數除法,它將結果向下捨去並丟棄小數部分。在這種情況下,3 除以 5 得到 0,如整數除法中所預期的。

要修正此問題並獲得所需的浮點除法,我們需要確保至少有一個運算元表示為一個實數。這可以透過將「.0」附加到除數或被除數來實現:

double f = 3.0 / 5;  // Explicitly making the dividend a real number

// or

double f = 3 / 5.0;  // Explicitly making the divisor a real number

透過將其中一個運算元轉換為實數,我們強制編譯器執行浮點除法。這可確保保留小數部分,並將正確的結果(本例中為 0.6)儲存在 f 變數中。

以上是為什麼 C 中的整數除法儲存在 Double 變數中時結果為零?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn