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

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

  1. 使用文字值
  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,我错过了分隔千位的逗号。怎么会?

【问题讨论】:

    标签: c# decimal globalization cultureinfo culture


    【解决方案1】:

    这就是问题所在:

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

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

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

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


    【讨论】:

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

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

    【讨论】:

    • 说真的,有时候我需要休息一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    相关资源
    最近更新 更多