Q
奇怪的結果在C#
1
A
回答
11
4
1
和2
都被視爲整數常量。 int
除以int
的結果是另一個int
,在投射到double
之前。向編譯器指示至少有一個常量是後綴爲d
或提供小數點的兩倍。
例如
double a = 1d/2d;
5
的劃分,在整數運算這意味着你將失去精度之前的結果分配給您的double
類型執行。
將其中一個文字升到double
,強制執行浮點數。即寫
double a = 1.0/2;
2
嘗試這種情況:
雙A =(雙)1 /(雙)2;
Regards,
相關問題
- 1. 奇怪的結果在C
- 2. 奇怪的結果編輯在C++
- 3. 奇怪的結果
- 4. 奇怪的結果()
- 5. 奇怪的結果
- 6. 奇怪的結果
- 7. 奇怪的結果
- 8. 奇怪的結果
- 9. 奇怪的計算結果的Objective-C
- 10. 的Objective-C:奇怪的計算結果
- 11. C++:奇怪的數學結果
- 12. 奇怪的結果與C字符串
- 13. C++:fmodf()&fmod() - 奇怪的結果?
- 14. c#比較操作奇怪的結果
- 15. C switch case REALY奇怪的結果
- 16. 奇怪SUM()結果
- 17. 結果在串奇怪
- 18. 打印奇怪的結果
- 19. 奇怪的輸出結果
- 20. Postgres to_tsquery - 奇怪的結果
- 21. gdb的奇怪結果
- 22. timeit的奇怪結果
- 23. 奇怪的array_diff結果
- 24. 範圍奇怪的結果
- 25. 奇怪的結果上iOS10
- 26. 奇怪的結果與IF
- 27. 高圖的奇怪結果
- 28. 奇怪的sizeof()結果
- 29. 奇怪的Oracle XMLType.getClobVal()結果
- 30. Boost的奇怪結果:: regex
因爲1/2的整數除法爲零。無關緊要你分配零。 –
您需要了解編譯器處理輸入的差異和方式! (int)1 /(int)2將得到int的結果! – WhileTrueSleep
這裏的故事的寓意是:**對於C#中的大多數表達式,表達式的類型分析獨立於它被分配給**的內容。僅僅因爲您將其分配給雙倍,「1/2」的值不會改變。 (這個規則的例外是lambda,它根據分配的內容改變它們的含義。) –