J'utilise habituellement une fonction multiculturelle pour analyser les entrées utilisateur, principalement parce que si quelqu'un est habitué au pavé numérique et utilise une culture qui utilise la virgule comme séparateur décimal, cette personne utilisera la pointe du pavé numérique au lieu de la virgule.
public static double GetDouble(string value, double defaultValue)
{
double result;
//Try parsing in the current culture
if (!double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.CurrentCulture, out result) &&
//Then try in US english
!double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out result) &&
//Then in neutral language
!double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture, out result))
{
result = defaultValue;
}
return result;
}
Attention cependant, les commentaires de @nikie sont vrais. Pour ma défense, j'utilise cette fonction dans un environnement contrôlé où je sais que la culture peut être soit en-US, en-CA ou fr-CA. J'utilise cette fonction parce qu'en français, nous utilisons la virgule comme séparateur décimal, mais quiconque a déjà travaillé dans la finance utilisera toujours le séparateur décimal sur le pavé numérique, mais il s'agit d'un point, pas d'une virgule. Donc, même dans la culture fr-CA, j'ai besoin d'analyser des nombres qui auront un point comme séparateur décimal.