Använd CultureInfo och TryParse för hantering av decimaler i ASP.NET
Om man ska formatera tal i .NET behöver man tänka på att olika länder har olika decimalavgränsare. Exempelvis används punkt som decimalavgränsare i England, medan vi i Sverige använder kommatecken.
För att visa rätt avgränsare för rätt språk bör man använda sig av klassen CultureInfo i .NET och kombinera den med TryParse-felhantering.
Importera System.Globalization och använd CultureInfo
För att kunna använda sig av CultureInfo måste man importera namespacet System.Globalization. Sedan använder vi oss av CultureInfo och NumberFormatInfo för att visa rätt decimalavgränsare:
// set correct CultureInfo to output correct number format
CultureInfo cultureInfo = CultureInfo.CurrentCulture;
NumberFormatInfo nfi = cultureInfo.NumberFormat;
nfi.CurrencyDecimalSeparator = ".";
double price = 14.90;
if (Double.TryParse(price.ToString(), NumberStyles.Any, nfi, out price) == false) price = 0.00;
litPrice.Text = price.ToString();
CultureInfo.CurrentCulture returnerar exempelvis sv-SE för Sverige och en-GB för England. I .NET finns automatiskt stöd för olika länders talhantering, vilket gör att vi får ut rätt decimalavgränsare för rätt land.
Felhantering med TryParse
En tumregel när man jobbar med tal i .NET är att använda TryParse för att kolla att det verkligen är rätt datatyp som returneras. Du kan använda TryParse för ett flertal datatyper, exempelvis Double och Int32.
I exemplet ovan ger jag slutligen Literalen litPrice ett värde, som ges av price.ToString().