显示货币符号在数值后面

7

我正在使用CultureInfo方法成功地将所有不同的货币格式化为它们正确的格式。

但是在某些例外情况下,例如欧元和瑞典克朗货币,我需要能够在价值后面添加它们。目前我的CultureInfo将它们格式化为以下方式:"SEK 1.00,00",而它应该是"1.00,00 SEK"。

任何帮助都将不胜感激。

3个回答

9

您所需的就是更改文化中的 NumberFormatInfo.CurrencyPositivePatternNumberFormatInfo.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 克郎


1
可以的,谢谢Alex。只是为了让我理解你所做的事情,我只需要添加CurrencyPositivePattern和CurrencyNegativePattern方法就可以将货币符号移到末尾? - R100
1
@R100:是的,但这些是NumberFormatInfo类的属性(不是方法)。 - Oleks

3

请注意 CurrencyNegativePattern

这段代码

CultureInfo swedish = new CultureInfo("sv-SE");
swedish = (CultureInfo)swedish.Clone();
swedish.NumberFormat.CurrencyPositivePattern = 3;
swedish.NumberFormat.CurrencyNegativePattern = 3;

我会给你

134.99 克朗。

克朗 134.99 克朗 -

将货币的NegativePattern更改为8。

swedish.NumberFormat.CurrencyNegativePattern = 8;

会给你

134.99 克朗。

-134.99 克朗。

更多信息请查看 https://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.currencynegativepattern(v=vs.110).aspx


0
string.Format(CultureInfo.CurrentCulture, "{0:C}", moneyValue.DataAmount)

如果这解决了问题,提供一些解释会让答案更好。 - matt freake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接