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