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

本文关键字:千位 未知 小数 分隔符 十进制 格式化 ToString 使用 | 更新日期: 2023-09-27 18:27:44

我有很多小数,每个小数的四舍五入方式不同:

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

有没有一种通用的方法可以在保持原始小数四舍五入不变的情况下为千个分隔符插入逗号?

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

尝试使用Format。

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

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

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

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

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