在c#中显示小数到第n位

Sak*_*ket 1 c#

我知道我们可以显示小数到一定数量的地方(如果没有固定的地方).例如,我们可以使用String.Format以下方式显示最多2个位置:

String.Format("{0:0.00}", 123.4567); 
Run Code Online (Sandbox Code Playgroud)

但我们的要求是,我们必须从数据库中取不到小数位,并将十进制值显示到该位置.例如:

int n=no of decimal places
Run Code Online (Sandbox Code Playgroud)

我想写一些类似的东西:

String.Format("{0:0.n}", 123.4567);
Run Code Online (Sandbox Code Playgroud)

任何建议都会有很大帮助.

添加注意:String.Format将数字四舍五入.我正在寻找省略剩余数字的东西.

Tim*_*ter 5

也许:

int n = 3;
string format = String.Format("{{0:0.{0}}}", new string('0', n));
Console.Write(String.Format(format, 123.4567)); // 123,457
Run Code Online (Sandbox Code Playgroud)

作为方法:

public static string FormatNumber(double d, int decimalPlaces)
{
    string format = String.Format("{{0:0.{0}}}", new string('0', decimalPlaces));
    return String.Format(format, d);
}
Run Code Online (Sandbox Code Playgroud)

甚至更简单,使用ToString+ N格式说明符:

public static string FormatNumber(double d, int decimalPlaces)
{
    return d.ToString("N" + decimalPlaces); 
}
Run Code Online (Sandbox Code Playgroud)

如果您不想要默认的舍入行为,但您只想截断剩余的小数位:

public static string FormatNumberNoRounding(double d, int decimalPlaces)
{
    double factor = Math.Pow(10, decimalPlaces);
    double truncated = Math.Floor(d * factor) / factor;
    return truncated.ToString();
}
Run Code Online (Sandbox Code Playgroud)