2011-09-15 46 views
11

我需要格式化double类型,使其具有最小的小数点后两位数,但不限于为十进制数字最大数量最低数量:格式双用型的小数位数

5  -> "5.00" 
5.5 -> "5.50" 
5.55 -> "5.55" 
5.555 -> "5.555" 
5.5555 -> "5.5555" 

我怎样才能实现呢?

+0

所以,你要加倍转换为字符串,并确保它有至少2个十进制数字? –

+0

@Bojan Kogoj,是的 – SiberianGuy

回答

3

试试这个

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); 
    } 
32

您可以使用非可选数字的0格式specificer,并#可选数字:

n.ToString("0.00###") 

这个例子给你最多五个十进制数字,您可以根据需要添加更多的#位置。

2

ToString("0.00#")的东西应该工作

在这种情况下,将最大到3位小数,所以根据需要添加哈希值。