打印数字在数千之前,逗号在美分之前

时间:2014-03-19 09:20:19

标签: c# numbers

我在DB

50172,40 

500,00

在C#中我想将其打印为

50.172,40

500,00

所以在成千上万之前点数和逗号之前的逗号

我尝试了什么

public static string ToBankString(this decimal value)
        {
            return value.ToString("N2", CultureInfo.InvariantCulture);
        }

但是我得到了

50,172.40

点和逗号的顺序错误。我该怎么办?

2 个答案:

答案 0 :(得分:5)

您可以创建自己的NumberFormatInfo并使用它来格式化数字:

var value = 50172.40M;
var numberFormat = new NumberFormatInfo();
numberFormat.CurrencyDecimalSeparator = ",";
numberFormat.CurrencyGroupSeparator = ".";
Console.WriteLine(value.ToString("N2", numberFormat));

这将写50,172.40

但也许您应该使用CultureInfo.CurrentCulture,因为它定义了用户更喜欢格式化数字的方式?如果您未在CultureInfo中指定任何内容,则会ToString使用此{{1}}。

答案 1 :(得分:1)

您正在使用CultureInfo.InvariantCulture来格式化这样的数字。

你应该提供自己的文化。你可以:

  1. 使用CultureInfo.CurrentCulture或者您希望格式依赖于您的程序运行的操作系统中设置的文化。
  2. 自己设置文化,如果你想确保它总是以你的方式格式化,无论操作系统中设置的文化如何。例如CultureInfo.GetCultureInfo("it-IT")
  3. 根据Martin的回答创建自己的NUmberFormatInfo