string s = "12,55";
float f;
bool b = float.TryParse(s, NumberStyles.Any, CultureInfo.GetCultureInfo("pl-PL"), out f);
Console.WriteLine(b + " " + f);
True 12,55
string s = "12.55";
float f;
bool b = float.TryParse(s, NumberStyles.Any, CultureInfo.GetCultureInfo("pl-PL"), out f);
Console.WriteLine(b + " " + f);
False 0
Podsumowując:
InvariantCulture – używamy do zapisu i odczytu danych oraz do operacji wew. programu. Mamy wtedy pewność, że format na którym pracujemy jest jednolity.
InvariantCulture nie jest żadną konkretną reprezentacją jakiejś jednej kultury. Jest to raczej najbardziej standardowa i ujednolicona forma formatowania oparta na kulturze typu „en-US” (ale nie jest taka sama)
CultureInfo.CurrentCulture – używamy gdy chcemy sformatować dane od użytkownika na przykład z formularzy itd. Odczytywanie CurrentCulture nie zawsze jest prawdziwe i trzeba na to zwrócić uwagę.
Specyficznych kultur używamy gdy chce na siłę wymusić format na przykład wyświetlając dane użytkownikowi końcowemu.
src http://blogprogramisty.net/cultureinfo-w-c/