整數除法在雙變量中產生令人驚訝的零
在嘗試計算簡單除法(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中文網其他相關文章!