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

本文关键字:数字 打印 | 更新日期: 2023-09-27 17:50:51

我有50172,40500,00。我想将它们打印为 C# 中的50.172,40500,00(千前点,美分前逗号(。

我尝试过的:

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

但我得到50,172.40(点和逗号的顺序错误(。我能做什么?

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

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

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

这将写入50,172.40.

但也许您应该使用CultureInfo.CurrentCulture,因为这定义了用户喜欢如何格式化数字?如果未在 ToString 中指定任何 ,则此CultureInfo是默认使用的 。

你正在使用这样的数字格式CultureInfo.InvariantCulture

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

  1. 如果希望格式依赖于运行程序的操作系统中的区域性集,请使用 CultureInfo.CurrentCulture 或。
  2. 如果要确保始终按照自己的方式设置区域性,无论操作系统中设置的区域性如何,都可以自行设置区域性。例如CultureInfo.GetCultureInfo("it-IT")
  3. 根据马丁的答案创建自己的NUmberFormatInfo