I display some currencies in UK culture :
value.ToString("C2", CultureInfo.CreateSpecificCulture("en-GB"));
But since I have switched my code to .NET 5, I have the following result :
GBP124.00
How can i get back £124.00 by still using C0 or C2 ?
I'm working in Blazor WebAssembly. Here an exemple :
(fiddle: https://blazorfiddle.com/s/2dyefc8o)
@page "/"
@using System.Globalization
@FormatDefaultFloatCurrency(price)
<br />
@FormatFloatCurrency(price)
<br />
@FormatFloatCurrencyISO(price)
@code {
float price = 4897;
string FormatDefaultFloatCurrency(float value)
{
var regionCode = "en-GB";
return value.ToString("C0", CultureInfo.CreateSpecificCulture(regionCode));
}
string FormatFloatCurrency(float value)
{
var regionCode = "en-GB";
var region = new RegionInfo(regionCode);
var culture = CultureInfo.CreateSpecificCulture(regionCode);
culture.NumberFormat.CurrencySymbol = region.CurrencySymbol;
return value.ToString("C0", culture);
}
string FormatFloatCurrencyISO(float value)
{
var regionCode = "en-GB";
var region = new RegionInfo(regionCode);
var culture = CultureInfo.CreateSpecificCulture(regionCode);
culture.NumberFormat.CurrencySymbol = region.ISOCurrencySymbol;
return value.ToString("C0", culture);
}
}
In .NET Core 3.1 (the version blazorFiddle uses) :
£4,897
£4,897
GBP4,897
And the results I get in .NET 5 :
GBP4,897
GBP4,897
GBP4,897
According to https://github.com/dotnet/runtime/issues/45262, it seems there is an issue with the cultures in Blazor webAssembly.
You can add
<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
in the client project file (.csproj), inside PropertyGroup