我真搞不清楚爲什麼會這樣,我的代碼:Math.Sqrt(2/3)返回0
double x = Math.Sqrt(2/3);
MessageBox.Show(x.ToString());
顯示0 答案是
0.8164,我知道我也會必須使用Math.Round來完成這一點,但目前的問題是我越來越0
我真搞不清楚爲什麼會這樣,我的代碼:Math.Sqrt(2/3)返回0
double x = Math.Sqrt(2/3);
MessageBox.Show(x.ToString());
顯示0 答案是
0.8164,我知道我也會必須使用Math.Round來完成這一點,但目前的問題是我越來越0
2/3
是整數運算,你想要的是2.0/3
這意味着我要使用浮點數。
你認爲Intereger
與你從數學中知道的不同。在編程語言中,它意味着int操作的結果本身就是一個整數。
在你的例子中2/3
是一個整數運算,這意味着結果向下舍入到最接近的整數,即零。爲避免出現這種情況,至少應該將其中一個操作數作爲某個浮點值進行處理,或者使用2.0
或2f
(或者3.0
或3f
)。
'2/3'是一個整數除法並返回'0'。你想要使用浮點數 – UnholySheep
爲什麼這被低估?這個問題寫得很好,記錄了預期的和實際的行爲。 – Bathsheba
@Bathsheba - 因爲它沒有顯示任何研究工作。即使試圖診斷問題,也會顯示產生問題的代碼部分是分割而不是平方根操作。 – Sayse