解析后十进制不显示组(千)分隔符

Posted

技术标签:

【中文标题】解析后十进制不显示组(千)分隔符【英文标题】:Decimal not showing group(thousand) separator after parse 【发布时间】:2015-12-05 23:22:45 【问题描述】:

在控制台应用程序中,我创建了 2 个小数:

    使用文字值 使用字符串解析

我已将我的文化设置为“en-GB”

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-GB");

Decimal money = 14343431.948M;
Decimal moneyConversion = decimal.Parse("-34,555.897"); 

string decimalString = money.ToString("N3");
string moneyConversionString = moneyConversion.ToString("N3");

Console.WriteLine("Decimal value: " + decimalString); //prints 14,343,431.948
Console.WriteLine("Decimal value Converted: " + moneyConversion); //-34555.897

第一个写入行按预期显示十进制表示,而第二个打印 -34555.897 但我期待 -34,555.897,我错过了分隔千位的逗号。怎么会?

【问题讨论】:

【参考方案1】:

这就是问题所在:

Console.WriteLine("Decimal value Converted: " + moneyConversion); //-34555.897

您使用的是moneyConversiondecimal 值)而不是moneyConversionString。如果您将其更改为:

Console.WriteLine("Decimal value Converted: " + moneyConversionString);

你会得到你期望的格式。否则你只是有效地调用moneyConversion.ToString(),它将使用默认的“G”格式。


【讨论】:

一直在读变量名,却没有意识到它们是……天哪!!!在这上面浪费了这么多时间!!真丢脸。【参考方案2】:

您正在打印小数点的值(即moneyConversion),而不是它的字符串表示形式(moneyConversionString)。

【讨论】:

说真的,有时候我需要休息一下。

以上是关于解析后十进制不显示组(千)分隔符的主要内容,如果未能解决你的问题,请参考以下文章

在Textview中显示千位分隔符和十进制格式的数字

asp.net mvc 设置数字格式默认十进制千位分隔符

十进制字符串与千位分隔符?

如何将十进制值显示到小数点后 2 位?

逗号作为小数分隔符空格作为千​​位分隔符C# [重复]

在 Swift 中向 Int 添加千位分隔符