2010-06-17 106 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