用四位数字格式化小数,除非这些数字为零
Format a Decimal with four digits, except when those digits are zeroes
我们有一个特定的格式问题,希望以最有效的方式解决。
我们必须将 Decimal 格式化为小数点后四位数字,除非没有小数点,因为在这种情况下,小数点应格式化为小数点后两位数字
我举几个例子来说明:
1.234 应打印为 1.234(所有数字)
尽管
1.000 应打印为 1.00(限于两位数)
和
1.500 应打印为 1.50(限于两位数)
换句话说:我们要删除小数点后所有不必要的零,但要确保逗号后始终保留两位数字。
我猜 .NET 中已经提供了执行此操作的简单方法吗?如果是这样,我在想我可以使用 .ToString()
函数将其转换为字符串并解析小数点后的所有内容?或者谁有更有效的想法?
这个呢?
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);
}
使用以下格式说明符调用 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
我们有一个特定的格式问题,希望以最有效的方式解决。
我们必须将 Decimal 格式化为小数点后四位数字,除非没有小数点,因为在这种情况下,小数点应格式化为小数点后两位数字
我举几个例子来说明:
1.234 应打印为 1.234(所有数字) 尽管 1.000 应打印为 1.00(限于两位数) 和 1.500 应打印为 1.50(限于两位数)
换句话说:我们要删除小数点后所有不必要的零,但要确保逗号后始终保留两位数字。
我猜 .NET 中已经提供了执行此操作的简单方法吗?如果是这样,我在想我可以使用 .ToString()
函数将其转换为字符串并解析小数点后的所有内容?或者谁有更有效的想法?
这个呢?
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);
}
使用以下格式说明符调用 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