Nem működik a convert.todouble

Nem működik a convert.todouble
2014-04-04T14:18:05+02:00
2014-04-04T14:32:10+02:00
2022-10-15T21:51:37+02:00
Lovi
Nem megy a Convert.ToDouble, A try előtt a Messagebox.Show(price); szerint az érték 36.32 És mégis a "Nem megfelelő a bemeneti karakterlánc formátuma." hibaüzenetet dobja. Az értéket egy XML fileból olvasom ki, (kódolása UTF8 BOM nélkül) XDocument-el.
Próbáltam azt is, hogy előtte lecseréltettem a pontot vesszőre, de azt se fogadja el.
price = price.Replace(".", ",");
Van ötlet, hogy miért?

string price = xe.Element(priceRowName).Value; try { price = (Convert.ToDouble(price)).ToString(); }
Mutasd a teljes hozzászólást!
Magyarra van állítva a windows-os területi beállítás, ilyenkor a "," karakter az elválasztó.

A megoldás az invariant culture használata parse-oláskor, ilyenkor a "." lesz a tizedes karakter.

Pl.

Console.WriteLine(Convert.ToDouble("3.14", CultureInfo.InvariantCulture));
Mutasd a teljes hozzászólást!

  • Nagyon köszönöm a gyors választ, ez megoldotta a gondot.
    Ezzel a beállítással Angol és magyar területi beállításokkal sem változik meg?
    Mutasd a teljes hozzászólást!
  • Nem változik meg, ezzel explicit megadod, hogy milyen (itt: régiófüggetlen) formátumban vársz törtszámot.

    The InvariantCulture property can be used to persist data in a culture-independent format. This provides a known format that does not change and that can be used to serialize and deserialize data across cultures. After the data is deserialized, it can be formatted appropriately based on the cultural conventions of the current user.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd