Německé Windows: falsche System.Number.ParseDouble – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Německé Windows: falsche System.Number.ParseDouble – .NET – Fórum – Programujte.comNěmecké Windows: falsche System.Number.ParseDouble – .NET – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
motorcb0
Newbie
17. 7. 2013   #1
-
0
-

Zdravim.

Napsal jsem si jednoduchý prográmek, který se dostal kolegovi do Německa, kde ho ovšem nemůže spustit.
Má německé Windows XP. Program po spuštění hlásí chybu:

Die Eingabezeichenfolge hat das falsche Format. bei System.Number.ParseDouble(String value, NumberStyle options, NumberFormatInfo numfmt)

Cos tím?
Není to tím, že v Německu mají desetinnou čárku místo desetinné tečky?

Nahlásit jako SPAM
IP: 93.99.186.–
Reklama
Reklama
Evzen+2
Návštěvník
18. 7. 2013   #2
-
0
-

Ahoj,

ano, to je dost pravděpodobné.

Zkus toto:

double d = Double.Parse(myString, CultureInfo.InvariantCulture);

Evžen

Nahlásit jako SPAM
IP: 193.179.183.–
motorcb0
Newbie
18. 7. 2013   #3
-
0
-

#2 Evzen
Díky. Co ten příkaz přesně dělá? Abych nepoužíval něco co neznámého :-)

Nahlásit jako SPAM
IP: 212.71.134.–
Evzen+2
Návštěvník
18. 7. 2013   #4
-
0
-

#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

Nahlásit jako SPAM
IP: 193.179.183.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 33 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý