使用最少十进制位数格式化双精度类型
Posted
技术标签:
【中文标题】使用最少十进制位数格式化双精度类型【英文标题】:Format double type with minimum number of decimal digits 【发布时间】:2011-09-15 15:37:00 【问题描述】:我需要格式化双精度类型,使其至少有两位小数,但不限制最大小数位数:
5 -> "5.00"
5.5 -> "5.50"
5.55 -> "5.55"
5.555 -> "5.555"
5.5555 -> "5.5555"
我怎样才能实现它?
【问题讨论】:
所以你想双重转换为字符串并确保它至少有 2 个十进制数字? 【参考方案1】:您可以将0
格式指定器用于非可选数字,将#
用于可选数字:
n.ToString("0.00###")
此示例最多为您提供五个十进制数字,您可以根据需要添加更多 #
位置。
【讨论】:
请注意,输出将是特定于文化的。例如,在某些国家/地区,小数分隔符将是“,”而不是“.”。如果你坚持一个'。使用:n.ToString("0.00###", CultureInfo.InvariantCulture);
【参考方案2】:
试试这个
static void Main(string[] args)
Console.WriteLine(FormatDecimal(1.678M));
Console.WriteLine(FormatDecimal(1.6M));
Console.ReadLine();
private static string FormatDecimal(decimal input)
return Math.Abs(input - decimal.Parse(string.Format("0:0.00", input))) > 0 ?
input.ToString() :
string.Format("0:0.00", input);
【讨论】:
【参考方案3】:ToString("0.00#")
之类的东西应该可以工作
在这种情况下,它最多保留 3 个小数位,因此请根据需要添加哈希。
【讨论】:
以上是关于使用最少十进制位数格式化双精度类型的主要内容,如果未能解决你的问题,请参考以下文章