I am using CultureInfo methods to successfully format all different currencies into their correct format.
But on some exceptions, such as EUR and SEK currencies I need to be able to add them after the value. At the moment my CultureInfo is formatting them in the following way: "SEK 1.00,00" when it needs to be "1.00,00 SEK".
Any help is appreciated.
In American English, the currency symbol is placed before the amount; the same is true for British English. It is $20, not 20$.
All you need is to change the NumberFormatInfo.CurrencyPositivePattern
and NumberFormatInfo.CurrencyNegativePattern
properties for the culture.
Just clone the original culture:
CultureInfo swedish = new CultureInfo("sv-SE");
swedish = (CultureInfo)swedish.Clone();
swedish.NumberFormat.CurrencyPositivePattern = 3;
swedish.NumberFormat.CurrencyNegativePattern = 3;
and then
var value = 123.99M;
var result = value.ToString("C", swedish);
should give you desired result. This should get you:
123,99 kr
Be careful about the CurrencyNegativePattern
This code
CultureInfo swedish = new CultureInfo("sv-SE");
swedish = (CultureInfo)swedish.Clone();
swedish.NumberFormat.CurrencyPositivePattern = 3;
swedish.NumberFormat.CurrencyNegativePattern = 3;
Will give you
134,99 kr.
kr.134,99kr.-
Changing CurrencyNegativePattern to 8
swedish.NumberFormat.CurrencyNegativePattern = 8;
Will give you
134,99 kr.
-134,99 kr.
More info https://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.currencynegativepattern(v=vs.110).aspx
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With