使用ToString()格式化十进制值以使逗号为千位分隔符,其中小数位数未知

时间:2013-08-15 14:51:04

标签: c# string formatting decimal number-formatting

我有很多小数,每个小数都不同:

decimal quantity = Decimal.Round(item.Quantity.Value, 2, 
    MidpointRounding.AwayFromZero);
decimal difference = Decimal.Round(quantity * eva, 0, 
    MidpointRounding.AwayFromZero);

绑定到UI时,我会像这样转换为字符串:

string Quantity = quantity.ToString("G", CultureInfo.InvariantCulture);
string Difference = difference.ToString("G", CultureInfo.InvariantCulture);

是否有通用方法为千位分隔符插入逗号,同时保持原始小数舍入相同?

3 个答案:

答案 0 :(得分:2)

尝试使用格式。

        double d = 1.234567;
        String output = d.ToString("#,##0.##");

此外,

double d = 123456789.1;
string format = d.ToString().
                  IndexOf(NumberFormatInfo.CurrentInfo.NumberDecimalSeparator) 
                  >=0 ? "#,##0.00" : "#,##0";
Console.WriteLine (d.ToString(format));

答案 1 :(得分:1)

对于任何想知道的人,我最终使用String.Format(new CultureInfo("en-US"), "{0:N}", difference)并根据我需要的小数位数更改了N

答案 2 :(得分:0)

您可以使用“N”格式说明符,并提供您希望保留任何数字的位数。如果您希望每个数字可能具有不同的位数,则您必须确定每次都要提供给格式字符串的数字。

quantity.ToString("N(digits)");

完整文档位于http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#NFormatString