2010-03-24 55 views
0

哪種方式更好地去除浮點數小數位或有更高效的方法?Convert.ToInt或String.Split:哪個更有效?

四捨五入並不重要,我感興趣的顯示數字

 Float number;    
     1- int wholeNumber= Convert.ToInt(number); 
     string display=wholeNumber.ToString(); 

     2- string [] splitNumber= number.ToString().Split('.'); 
     string display=splitNumber[0]; 

回答

5

這裏有兩個oprions,更爲高效:採用格式說明零個小數

((int)number).ToString() 

格式數量:

簡單地把一些不是調用Convert.ToInt32

number.ToString("N0") 

第一個應該稍微快一些,因爲整數格式比浮點數更容易。

如果你想要的東西,真的是有效的,你會投的數量爲整數,然後格式化成自己使用的代碼進行了優化僅做你需要什麼,僅此而已的字符串。

+1

+1'number.ToString(「NO」)',它是簡單,準確地描述了代碼的意圖,使其易於閱讀。我懷疑它在大多數情況下所具有的低效率將成爲問題。 – Brian 2010-03-24 19:30:17

5

既然你只是刪除了小數,這樣做:

int wholeNumber = (int)number; 

這將有效下降小數。請注意,它不會包含數字,但這不是您請求的行爲。

4

1更好,因爲它描述了你在做什麼。 2在不同的地區中斷。

2
int i = (int)number; 
string display = i.ToString(); 

演員爲int會更有效的自動降大任於小數

2

我假設,你的意思是「更快」。

您是否嘗試過這個決定自己?我懷疑你會得到一個明確的答案,除非別人提前嘗試嘗試。

設置一個循環做同樣的處理1000次左右(調整數,您認爲合適),然後時間差。

1

如果它只是顯示,通過在正確的格式字符串,你並不需要在所有轉換:

Float number;    
string display=number.ToString("F0"); 

注:這是有效編碼,不一定是內存和速度效率 - 你只能通過每種方法上的許多重複循環的時間來確定。

1

這個測試通過了這兩個工作。雖然不確定效率。你認爲哪個更好?截斷調用對於你正在做什麼更明確。

[Test] 
public void Getting_whole_number() 
{ 
    Assert.AreEqual("5", Math.Truncate(5.5).ToString()); 
    Assert.AreEqual("5", ((int)5.5).ToString()); 
} 
2

使用number.ToString(「N0」)是一個滿貫扣籃。試圖優化它是毫無意義的,無論你正在向用戶顯示字符串將是一個lot更昂貴。