#3 motorcb
Formátuje to dle specifické kultury a Invariant má být kulturně nezávislý, tedy se bude chovat všude stejně.
Problém je, že některé oblasti používají desetinnou čárku, jiné desetinnou čárku a aby to nebylo málo, tak někde používají tečku jako oddělovač tisíců.
double d = 0.0;
string myString = "123456,7";
d = Double.Parse(myString, CultureInfo.InvariantCulture);
// vrati d=1234567.0
d = Double.Parse(myString, CultureInfo.CreateSpecificCulture("en-EN"));
// vrati d=1234567.0
d = Double.Parse(myString, CultureInfo.CreateSpecificCulture("cs-CZ"));
// vrati d=123456.7
myString = "123456.7";
d = Double.Parse(myString, CultureInfo.InvariantCulture);
// vrati d=123456.7
d = Double.Parse(myString, CultureInfo.CreateSpecificCulture("en-EN"));
// vrati d=123456.7
d = Double.Parse(myString, CultureInfo.CreateSpecificCulture("cs-CZ"));
// FormatException - Input string was not in a correct format.
Nevím, co přesně potřebuješ, nemám k dispozici zdroják, ale odlaď si to tak jak potřebuješ buď pro jednu "kulturu" nebo to udělej nad tím invariantem. Případně můžeš před parsováním použít string.Replace a zaměnit tečky za čárky nebo čárky za tečky, to záleží na tom, co v aplikaci preferuješ.
Určitě je vhodné uživatele informovat o tom, že se aplikaci to či ono nelíbí a ať to napraví :)
Evžen