2016-04-03 88 views
1

我遇到了一個問題,一個大浮在C#代碼,我需要轉換爲int32轉換大浮到整數

int test = (int)199999900f; 

測試最終被設置爲199999904.

燦任何人都可以解釋這裏發生了什麼,爲什麼我在這一行代碼中獲得4的轉換?

回答

2

浮點只有有限的存儲量(依賴於實現,可能是32位),所以你超過了這一點。基本上,第9位數字不能存儲在浮動中。 你應該使用Double而不是float,這會給你更多的空間。

如果你的數字是一個常數,就像例子中所示的那樣,你根本不應該使用ny float,而只是把它作爲一個int。