使用 ToString() 格式化十进制值以将逗号作为千位分隔符,其中小数位数未知
Posted
技术标签:
【中文标题】使用 ToString() 格式化十进制值以将逗号作为千位分隔符,其中小数位数未知【英文标题】:Formatting a decimal value with ToString() to have commas as thousand separators where the amount of decimal places is unknown 【发布时间】:2013-08-15 14:51:03 【问题描述】:我有很多小数,每个小数都不同:
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);
是否有一种通用方法可以为千位分隔符插入逗号,同时保持原始小数舍入相同?
【问题讨论】:
你查过如何使用string.Format
方法.. 网上以及SO
上的大量示例
【参考方案1】:
尝试使用格式。
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));
【讨论】:
【参考方案2】:对于任何想知道的人,我最终使用 String.Format(new CultureInfo("en-US"), "0:N", difference)
并根据我需要多少小数位更改了 N
。
【讨论】:
【参考方案3】:您可以使用“N”格式说明符并提供您希望任何数字保留的位数。如果您希望每个数字可能具有不同的位数,则必须确定每次提供给格式字符串的数字。
quantity.ToString("N(digits)");
完整的文档位于http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#NFormatString
【讨论】:
以上是关于使用 ToString() 格式化十进制值以将逗号作为千位分隔符,其中小数位数未知的主要内容,如果未能解决你的问题,请参考以下文章
python 格式化单个值以在符合RFC4180的CSV文件中使用。使用逗号将这个函数返回的多个值连接到crea