【发布时间】:2011-03-11 12:15:05
【问题描述】:
我正在使用 CultureInfo 方法成功地将所有不同的货币格式化为正确的格式。
但在某些例外情况下,例如欧元和瑞典克朗货币,我需要能够在值之后添加它们。目前,我的 CultureInfo 正在以下列方式对其进行格式化:“SEK 1.00,00”需要为“1.00,00 SEK”时。
感谢任何帮助。
【问题讨论】:
标签: c# .net asp.net string-formatting currency
我正在使用 CultureInfo 方法成功地将所有不同的货币格式化为正确的格式。
但在某些例外情况下,例如欧元和瑞典克朗货币,我需要能够在值之后添加它们。目前,我的 CultureInfo 正在以下列方式对其进行格式化:“SEK 1.00,00”需要为“1.00,00 SEK”时。
感谢任何帮助。
【问题讨论】:
标签: c# .net asp.net string-formatting currency
您只需更改文化的NumberFormatInfo.CurrencyPositivePattern 和NumberFormatInfo.CurrencyNegativePattern 属性。
只需克隆原始文化:
CultureInfo swedish = new CultureInfo("sv-SE");
swedish = (CultureInfo)swedish.Clone();
swedish.NumberFormat.CurrencyPositivePattern = 3;
swedish.NumberFormat.CurrencyNegativePattern = 3;
然后
var value = 123.99M;
var result = value.ToString("C", swedish);
应该会给你想要的结果。这应该让你:
123,99 克朗
【讨论】:
NumberFormatInfo 类的属性(不是方法)。
注意 CurrencyNegativePattern
这段代码
CultureInfo swedish = new CultureInfo("sv-SE");
swedish = (CultureInfo)swedish.Clone();
swedish.NumberFormat.CurrencyPositivePattern = 3;
swedish.NumberFormat.CurrencyNegativePattern = 3;
会给你
134,99 克朗
kr.134,99kr.-
将 CurrencyNegativePattern 更改为 8
swedish.NumberFormat.CurrencyNegativePattern = 8;
会给你
134,99 克朗
-134,99 克朗
【讨论】:
string.Format(CultureInfo.CurrentCulture, "{0:C}", moneyValue.DataAmount)
【讨论】: