我知道我们可以显示小数到一定数量的地方(如果没有固定的地方).例如,我们可以使用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将数字四舍五入.我正在寻找省略剩余数字的东西.
也许:
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)