Frage zur Casting

13/05/2009 - 10:11 von Christoph Michalski | Report spam
Hallo,
ich muß eine Zahl, die zunàchst als String vorliegt, in Typ Double
konvertieren:

Dim ZahlStr As String = "1.35"
Dim ZahlDbl As Double
ZahlDbl = CType(ZahlStr, Double)

Leider bekomme ich als Ergebnis 135.0 ansatt 1.35.
Was mache ich da falsch?
gruß

Christoph
 

Lesen sie die antworten

#1 Peter Götz
13/05/2009 - 10:36 | Warnen spam
Hallo Christoph,

ich muß eine Zahl, die zunàchst als String vorliegt,
in Typ Double konvertieren:

Dim ZahlStr As String = "1.35"
Dim ZahlDbl As Double
ZahlDbl = CType(ZahlStr, Double)

Leider bekomme ich als Ergebnis 135.0 ansatt 1.35.
Was mache ich da falsch?



Du arbeitest mit dem falschen Betriebssystem.
Auf einem "Englischen" Windows würdest Du
mit CType("1.35", Double) den gewünschten
Wert 1.35 erhalten auf einem "Deutschen" Windows
müsste Dein String so aussehen: "1,35". Also
ein Komma als Dezimaltrenner enthalten.

Du kannst solche Strings mit TryParse bzw. Parse
zu num. Werten in Abhàngigkeit von einer selbst
zu definierenden CultureInfo umwandeln. Da Dein
String offenbar den Punkt als Dezimaltrenner enthàlt
könntest Du so vorgehen:


Dim strZahl as String = "1.35" ' mit Punkt
Dim dblZahl as Double

dblZahl = _
Double.Parse _
(strZahl, _
Globalization.CultureInfo.InvariantCulture)

Die "InvariantCulture" bewirkt, dass in Deinem String
der Punkt als Dezimaltrenner erkannt wird. Obigen
Code solltest Du in einen Try-Catch-Block packen,
falls strZahl auch nicht zu Double wandelbare Ausdrücke
enthalten kann.

Eine weitere Möglichkeit hast Du mit TryParse.

if Double.TryParse _
(strZahl, _
Globalization.NumberStyles.Float, _
Globalization.CultureInfo.InvariantCulture, _
dblNumber) = True Then

' dblNumber enthàlt nun den gesuchten Wert

else

' strZahl kann nicht zu Double umgewandelt werden.

end if

Hier ist ein Try-Catch nicht erforderlich, da der Rückgabe-
wert von TryParse (True oder False) aussagt, ob der im
String enthaltene Ausdruck umgewandelt werden konnte
oder nicht.

Alles klar?


Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen