我試圖劃分(float)200/(float)500
,但結果爲0.0。爲什麼這樣,我們怎麼能有0.4的結果呢?非常感謝。爲什麼浮動除以較大的浮點數爲零,以及如何避免這種情況在C#中?
1
A
回答
2
這是不可能的。我可以考慮以下情況:
- 您正在將結果強制轉換爲整數;在這種情況下,它被取整爲0
- 200和500不是真的漂浮物,而是整數;結果將默認爲整數
- 您打印浮點數的方式將其轉換爲整數或不顯示小數值。
2
這裏沒什麼錯 - 我和安德烈亞斯在一起。
Console.WriteLine((float)200/(float)500);
Console.WriteLine("Press any key to continue");
Console.ReadKey(true);
結果:
0.4
按任意鍵繼續
3
這是一個非常常見的錯誤,每個程序員都使得它至少一次。有兩個類的除法運算符,它們都使用相同的符號,積分和浮點數。編譯器根據操作數的類型選擇使用哪個。如果均爲,則左側和右側的操作數是不可分割的,那麼您將得到一個整數除法。機器代碼中的idiv指令。它截斷爲零併產生一個整數結果。
只要至少一個操作數是浮點數,您將在機器代碼中獲得fdiv指令並查找結果。簡單地轉換成(浮動)或(雙)就足夠了,就像你在你的問題中所做的一樣。你只需要施放其中一個。或者使用像200f或200.0這樣的浮點文字
0
我在使用Unity3D項目的MonoDevelop調試器中遇到過這個問題。以某種方式評估窗口顯示1.0f/10.0f = 0長。這只是MonoDevelop IDE的一個bug。
相關問題
- 1. 爲什麼在浮點轉換中發生這種情況?
- 2. 浮點除以零
- 3. 爲什麼在Python中舍入浮點數時會發生這種情況?
- 4. 爲什麼vim在標籤的位置繪製下劃線,以及如何避免這種情況?
- 5. $ wpdb-> insert()用格式保存數據。爲什麼?以及如何避免這種情況?
- 6. Odoo ZeroDivisionError:浮點除以零
- 7. 爲什麼Smarty用'?php echo'%>'替換'%>'之類的東西; ?>以及如何避免這種情況?
- 8. 爲什麼這是一個XSS攻擊,以及如何防止這種情況?
- 9. 爲什麼以及如何Mysql浮動只適用於Java?
- 10. 爲什麼發生ArrayIndexOutOfBoundsException以及如何在Android中避免它?
- 11. 什麼是attr'gtbfieldid'以及如何避免自動填充行爲?
- 12. 如何避免這種情況?
- 13. 如何避免這種情況下
- 14. 添加浮點數,這是爲什麼?
- 15. 爲什麼「overflow:hidden」會清除浮點數?
- 16. 浮點數和零比較
- 17. 元組比較'A'==('A'),如何避免這種情況?
- 18. 在這種情況下如何避免服務地點? (Ninject)
- 19. Coredata浮點數變爲零
- 20. 爲什麼整數除零會導致浮點異常?
- 21. IE8在什麼情況下阻止Javascript以及如何避免它?
- 22. 在這種情況下,我可以避免反思嗎?
- 23. 爲什麼在這三種情況下
- 24. 爲什麼在這種情況下
- 25. 爲什麼在這種情況下
- 26. 爲什麼在這種情況下我得到零錯誤?
- 27. 爲什麼Solr搜索在這種情況下給零值
- 28. 爲什麼GCC4警告,以及如何避免它
- 29. 爲什麼拋出AbandonedMutextException以及如何避免它?
- 30. 爲什麼頁面在每次滑動後都向上滾動以及如何防止這種情況發生?
那麼,在我的機器上'200f/500f == 0.4f'。你如何顯示計算結果?你不會將它保存到'int'類型的變量中嗎? – 2010-03-31 08:03:26
可能是您的代碼以某種方式執行打字或轉換錯誤。你可以發佈你的代碼給我們檢查明顯的錯誤嗎? – 2010-03-31 08:05:32
我知道這是不可能的,但它只是做到了。我試圖再次運行該程序,它工作正常。我很抱歉浪費你的時間。非常感謝。 – Jronny 2010-03-31 08:13:30