2010-06-17 20 views
17

我知道,如果我們想顯示double爲兩位小數位數,一會只需要使用帶小數位的n個Double.ToString

public void DisplayTwoDecimal(double dbValue) 
{ 
    Console.WriteLine(dbValue.ToString("0.00")); 
} 

但如何將其擴展到N小數,其中N由用戶確定?

public void DisplayNDecimal(double dbValue, int nDecimal) 
    { 
    // how to display 
    } 

回答

48

使用「Nx」表示x十進制數字。

public void DisplayNDecimal(double dbValue, int nDecimal) 
{ 
    Console.WriteLine(dbValue.ToString("N" + nDecimal)); 
} 
+13

側使用Nx的效果是數字將被格式化爲數千個分隔符,即「1,234.5600」 – 2013-04-16 06:33:28

+5

如果你不想要成千上萬的分隔符,你可以使用'Fx' – Aidiakapi 2015-08-19 00:20:46

-4

我這樣做:

public string DisplayNDecimal(double dbValue, int nDecimal) 
{ 
    string decimalPoints = "0"; 
    if (nDecimal > 0) 
    { 
     decimalPoints += "."; 
     for (int i = 0; i < nDecimal; i++) 
      decimalPoints += "0"; 
    } 
    return dbValue.ToString(decimalPoints); 
} 

:)

這是它與StringBuilder(雖然可能不是更高效,肯定會需要更多的資源)

public string DisplayNDecimal(double dbValue, int nDecimal) 
{ 
    StringBuilder decimalPoints = new StringBuilder("0"); 
    if (nDecimal > 0) 
    { 
     decimalPoints.Append("."); 
     for (int i = 0; i < nDecimal; i++) 
      decimalPoints.Append("0"); 
    } 
    return dbValue.ToString(decimalPoints.ToString()); 
} 
+2

爲什麼不使用內置的格式化程序? – 2014-03-20 02:00:31

+1

請記住,這不適用於所有文化,因爲所有文化都不使用小數點。 – 2014-07-13 23:26:28