Announcement

Collapse
No announcement yet.

String mit Mantisse in Gleitkommazahl wandeln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • String mit Mantisse in Gleitkommazahl wandeln

    Hallo,
    Habe einen String mit einem Exponent und möchte diesen String in eine Gleikommazahl wandel um mit dieser weiter mathematische Rechnungen durchführen zu können.
    Wer kan mir da helfen? Entwicklungsumgebung ist vb.net

  • #2
    So sollte es gehen:

    Dim val As Double = Double.Parse("-2e-4", _
    System.Globalization.NumberStyles.AllowExponent _
    Or System.Globalization.NumberStyles.AllowLeadingSign _
    Or System.Globalization.NumberStyles.AllowDecimalPoin t

    Comment


    • #3
      Hallo,
      funktioniert. Jedoch habe ich in meinem String ein Punkt als Trennzeichen z.b. 0.144E+00. Da das das Projekt allerdings in mehreren Ländern eingesetzt wird kann ich nicht einfach den Punkt durch das Komma ersetzen.
      Das ist wohl nicht die richtige Lösung:

      Dim c As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")
      System.Threading.Thread.CurrentThread.CurrentCultu re = c
      System.Threading.Thread.CurrentThread.CurrentUICul ture= c

      Was kann ich da machen

      Comment


      • #4
        Das ist schon die richtige Lösung.

        bsp:
        'cultureinfo sichern
        Dim cul1 As System.Globalization.CultureInfo
        cul1 = System.Threading.Thread.CurrentThread.CurrentCultu re

        'cultureinfo auf US setzen
        Dim cul2 As New System.Globalization.CultureInfo("en-US", False)
        'System.Threading.Thread.CurrentThread.CurrentCult ure = cul2
        Dim val As Double = Double.Parse("0.144E+00", _
        System.Globalization.NumberStyles.AllowExponent _
        Or System.Globalization.NumberStyles.AllowLeadingSign _
        Or System.Globalization.NumberStyles.AllowDecimalPoin t)
        MessageBox.Show(val.ToString())

        'cultureinfo zurücksetzen
        System.Threading.Thread.CurrentThread.CurrentCultu re = cul

        Comment


        • #5
          Okay, stimmt die Lösung passt. Aber macht man das wirklich so das man hier einfach die aktuelle Kulturinfo zwischenspeichert und dann auf die jeweilige setzt die das entsprechende Zahlenformat enthält??

          Comment


          • #6
            Kann man machen, muss man aber nicht. Für derartige Sachen ist das nicht notwendig. Es genügt ein NumberFormatInfo das man entsprechend parametrisiert.

            'kulturneutrales Ziffernformat erstellen
            Dim ni As New System.Globalization.NumberFormatInfo
            'bei Bedarf Einstellungen anpassen zB.
            'ni.CurrencyDecimalSeparator = ","
            Dim val As Double = Double.Parse("0.144E+00", _
            System.Globalization.NumberStyles.AllowExponent _
            Or System.Globalization.NumberStyles.AllowLeadingSign _
            Or System.Globalization.NumberStyles.AllowDecimalPoin t _
            , ni)
            MessageBox.Show(val.ToString()

            Comment


            • #7
              Okay so passt das, Danke.
              Woher weiss mann eigentlich das es solche Funktionen gibt? Klar wenn ich die Funktion kenne und drück die F1 Taste dann bekomme ich in .net das entprechende angezeigt.
              Wobei ich mit der hilfe auch nicht als Anfänger anfangen kann...(Kopie aus der .net Hilfe)???

              NumberFormatInfo-Konstruktor

              Initialisiert eine neue, schreibbare Instanz der NumberFormatInfo-Klasse, die kulturunabhängig (invariant) ist.

              Hinweise
              Die Eigenschaften der neuen Instanz können geändert werden, wenn Sie eine benutzerdefinierte Formatierung wünschen

              Comment

              Working...
              X