交接來的程式發生了一個轉型上的錯誤,原來用 Convert 取整數時小數會進位,之後使用(int)結果便是正確,所以Convert 跟 (int)的轉型機制不同,使用在浮點運算要小心。
double d = 105.555;
int i1 = Convert.ToInt32(d); // = 106
int i2 = (int)(d); // = 105
文章標籤
全站熱搜
交接來的程式發生了一個轉型上的錯誤,原來用 Convert 取整數時小數會進位,之後使用(int)結果便是正確,所以Convert 跟 (int)的轉型機制不同,使用在浮點運算要小心。
double d = 105.555;
int i1 = Convert.ToInt32(d); // = 106
int i2 = (int)(d); // = 105
嗨~這個現象很有趣呢! 我剛剛測試發現一件怪事,他的進位機制不是單純的小數點進位或捨去,但是我也不太知道規則在哪裡,如果d的值是105.5,則兩個方法都會是105,可是如果d的值和您的一樣是105.555,就會有差別