我们有一个特定的格式问题,我们希望以最有效的方式解决。
在没有小数点的情况下,我们必须将小数点格式设置为小数点后的四位数,因为在这种情况下,小数点应设置为小数点后的两位数
我将举几个例子来解释:
1.234应打印为1.234(所有数字) 而 1.000应打印为1.00(限制为两位数) 和 1.500应打印为1.50(限制为两位数)
换句话说:我们要删除小数点后的所有不必要的零,但请确保在逗号后始终剩余两位。
我猜没有简单的方法来完成.NET中已经提供的方法吗?如果是这样,我想我可以使用.ToString()
函数将其转换为字符串并解析小数点后的所有内容吗?还是有人有更有效的想法?
答案 0 :(得分:5)
使用以下格式说明符调用decimal.ToString()
方法应为您提供2到4位小数的输出:
decimal d = 1.234m;
string output = d.ToString("0.00##");
有关数字格式说明符的更多信息,请参考MSDN。
标准数字格式字符串: https://msdn.microsoft.com/en-us/library/0b22a4x2(v=vs.110).aspx
自定义数字格式字符串: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings
答案 1 :(得分:0)
那呢?
string SetDecimals(decimal val)
{
var decimalStr = val.ToString().Split(new string[] { System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator }, StringSplitOptions.None)[1];
if (decimalStr.Length == 4 && !decimalStr.EndsWith("00"))
return string.Format("{0:N4}", val);
else if(decimalStr.Length == 3 && !decimalStr.EndsWith("0"))
return string.Format("{0:N3}", val);
else
return string.Format("{0:N2}", val);
}