C# `Double.ToString`N位小数

C# `Double.ToString`N位小数,c#,C#,我知道,如果我们想将一个双精度显示为两位十进制数字,只需使用 public void DisplayTwoDecimal(double dbValue) { Console.WriteLine(dbValue.ToString("0.00")); } 但是如何将其扩展到N小数位,其中N由用户决定 public void DisplayNDecimal(double dbValue, int nDecimal) { // how to display } 使用“

我知道,如果我们想将一个
双精度
显示为两位十进制数字,只需使用

public void DisplayTwoDecimal(double dbValue)
{
  Console.WriteLine(dbValue.ToString("0.00"));
}
但是如何将其扩展到
N
小数位,其中
N
由用户决定

 public void DisplayNDecimal(double dbValue, int nDecimal)
    {
     // how to display
    }
使用“Nx”表示x个十进制数字

 public void DisplayNDecimal(double dbValue, int nDecimal)
 {
   Console.WriteLine(dbValue.ToString("N" + nDecimal));
 }
我会用这个:

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);
}

使用Nx的副作用是,数字将使用数千个分隔符进行格式化,即“1234.5600”。如果您不需要数千个分隔符,您可以使用
Fx
为什么不使用内置格式设置器?请记住,这不适用于所有区域性,因为所有区域性都不使用句点作为小数点。
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());
}