回答
是 - 該計算是在整數算術正在執行。試試這個:
double num = 1.0/252.0;
基本上,結果被分配給的變量的類型不影響正在執行的算術運算。一個整數除以另一個整數的結果是一個整數;如果要使用浮點運算,則需要使其中一個或另一個操作數爲浮點類型。最簡單的方法就是在文字上加上「.0」。另一種方法是使用d
後綴:
double num = 1d/252d;
請注意,你只有真正需要做一個操作數爲它工作浮點值,但爲了清楚起見,在這種情況下,我可能會做兩個。
這很簡單,當然是有文字的事,但對於其他表達式(變量,方法調用等)的結果,你會需要使用強制:
int x = 1;
int y = 252;
double num = (double) x/(double) y;
同樣,你只需要投其中之一,所以這也可以工作:
int x = 1;
int y = 252;
double num = (double) x/y;
請注意,這不是特定於除法 - 它也會影響其他算術運算符。
或,如果你有整數變量,則將其中的一個轉換爲double:(double)a/b。 – 2010-09-01 19:59:09
@Vadim:是的,好點 - 我會編輯它。 – 2010-09-01 20:00:13
1和252都是文字整數,所以計算使用整數數學。 0是最接近的整數結果。使用1.0或252.0來獲得正確的double值。
你分2個整數和鑄造雙,
嘗試
double num = 1d/252d;
- 1. 'font-family:Symbol'and Windows-1252
- 2. Windows -1252不支持編碼名稱。 C#
- 3. 的Windows C API爲UTF8到1252
- 4. java.nio.charset.IllegalCharsetNameException:Windows-1252/WinLatin 1
- 5. atoi from char *在C中返回0 0
- 6. UTF-8或windows-1252?
- 7. AWK中的「c == 0 {c = 0; system(」cat「)}」
- 8. ICONV功能和Windows-1252
- 9. 手柄窗口1252和在Java
- 10. 將UTF8轉換爲Windows-1252
- 11. 轉換Windows 1252的Java
- 12. PHP cp1252/windows-1252轉換爲UTF-8
- 13. for(i = 0; 0; i)在c中執行一次爲什麼?
- 14. 在C++中檢測一個爲0的負數0
- 15. C# - 獲取HTML代碼爲使用Windows 1252編碼
- 16. 在c中獲取getint(0)的錯誤#
- 17. 不能在C#中找到表0 ExecuteDataSet
- 18. 在C++中創建特定位「0」
- 19. 不顯示零(「0」)中,在c#
- 20. 在C中的條件表達式0
- 21. 在C中找不到表0錯誤#
- 22. 什麼(char)0在C++中的含義?
- 23. 返回true在C++中返回0
- 24. 這是[0]在C++中安全嗎?
- 25. 在C++中將0複製爲000?
- 26. float在c中打印出負數0
- 27. 在C中,是否保證1/2 == 0?
- 28. Encoding.GetEncoding(1255)和Encoding.GetEncoding(1252)有什麼區別?
- 29. D/skia(1252):--- SkImageDecoder :: Factory返回null錯誤
- 30. 什麼是C中的「{0}」?
也就是說喬恩斯基特誰回答你的問題。去展示給你所有的朋友。我會。 :) – 2010-09-01 20:00:03
可能的重複[在C#中的分區不按我期望的方式](http://stackoverflow.com/questions/2400799/division-in-c-not-going-the-way-i-expect) – 2010-09-03 17:44:42