String aus Datei in Double konvertieren

  • WP8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von reustli.

    String aus Datei in Double konvertieren

    Hallo Zusammen
    Ich habe ziemlich Mühe mit dem konvertieren einer Zahl aus einer Textdatei in eine Double Variable.
    Der Wert in der Textdatei ist 3.654

    VB.NET-Quellcode

    1. Thread.CurrentThread.CurrentCulture = New CultureInfo("de-DE")
    2. Dim zahl As Double = Convert.ToDouble(System.IO.File.ReadAllText(My.Computer.FileSystem.SpecialDirectories.Desktop & "\test.txt"))
    3. MessageBox.Show(zahl)


    Liefert mir immer folgendes, falsches Ergebnis zurück:
    Das ist ein Problem mit der Zahlenkultur von Windows.
    Bei deutschen Windowses wird ein Beistrich als "CommaSeparator" verwendet ((1.23).ToString() ergibt "1,23").
    Lies auch mal diesen Thread durch:
    Unterprogramm läßt sich nicht starten
    Hier steht die Lösung, wie man dieses Problem richtig handhabt:
    social.msdn.microsoft.com/Foru…ouble?forum=csharpgeneral
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Ist doch richtig.
    Ich gehe mal davon aus, dass der Punkt das Dezimaltrennzeichen ist. Da du aber festgelegt hast, dass er die Deutschen Landeseinstellungen nutzen soll, ist der Punkt das Tausender-Trennzeichen.
    Also kannst du in der Datei den Punkt durch ein Komma ersetzen, beim Einlesen den Punkt durch ein Komma ersetzen, oder die Landeseinstellungen auf Englisch stellen.

    EDIT:
    Mist, schon wieder zu langsam ;)
    VIelen Dank für eure Antworten.
    So funktionierts wunderbar, die Dezimaltrennzeichen kommen jeweils je nach Ländereinstellung korrekt.

    VB.NET-Quellcode

    1. Convert.ToDouble(value, System.Globalization.CultureInfo.InvariantCulture)


    Bei meinem ersten Beitrag habe ich mit

    VB.NET-Quellcode

    1. Thread.CurrentThread.CurrentCulture = New CultureInfo("de-DE")

    jeweils nur getestet wie sich das Format mit den unterschiedlichen Ländereinstellungen verhält.