| |
VB.NET - Ein- und UmsteigerKonvertieren von Zahlen | | | Autor: WKaH | Datum: 02.12.20 12:20 |
| Hallo,
ich habe folgende Frage.
In einem VB Programm werden ja Zahlen in einem String automatisch gewandelt.
Dabei ist es ja so das in einer Zahl wie 704.0 der Punkt nicht als Komma betrachtet wird.
Um den Punkt in einen Komma zu wandeln gibt es ja die Methode Convert.
Ich hätte also erwartet das das Ergebnis folgender Zeile
lblAnzeigeTexte2.Text = Convert.ToDouble("704.6")
704,6 ist. Das Ergebnis ist aber 7046.
Kann mir bitte jemand erklären warum das so ist.
PS. Bin Anfänger
Viele Dank im Voraus. | |
Re: Konvertieren von Zahlen | | | Autor: effeff | Datum: 02.12.20 20:10 |
| Das ist relativ einfach. Bei uns bedeutet der Punkt normalerweise ein Tausender-Trennzeichen. Da diese aber nur optisch wirken und der Punkt nichts weiter zu sagen hat, wird er weggelassen.
Dein richtiges Ergebnis erhältst Du, wenn Du weitere Informationen zur Behandlung mitgibst:
Dim Zahl As String = "704.6"
Dim Ergebnis As Double = Convert.ToDouble(Zahl, _
Globalization.CultureInfo.InvariantCulture)
MessageBox.Show(Ergebnis) EALA FREYA FRESENA | |
Re: Konvertieren von Zahlen | | | Autor: WKaH | Datum: 03.12.20 11:34 |
| Hallo effeff,
vielen Dank für deine Antwort. Das mit dem Punkt als Tausender Stelle habe ich mir schon gedacht.
Ich habe das Handbuch von Thomas Theis.
Das Handbuch gibt es auch online.
Siehe
http://openbook.rheinwerk-verlag.de/einstieg_vb_2010/einstieg_vb_2010_kap_02_003.htm#mj20c7dead4252982d3d4afab3a8f4e74d
Heißt das, da der Lösungsvorschlag im Abschnitt 2.2.3 Textfelder nicht komplett ist (Siehe Listing 2.10)? | |
Re: Konvertieren von Zahlen | | | Autor: effeff | Datum: 03.12.20 11:44 |
| Ich finde, die Erklärung steht in Abbildung 2.20 Markierung der Fehlerzeile.
EALA FREYA FRESENA | |
Re: Konvertieren von Zahlen | | | Autor: WKaH | Datum: 04.12.20 11:11 |
| Hallo effeff,
Die Abbildung der Fehlerzeile ist doch nur für den Fall, das keine Zahlen sonder Buchstaben eingegeben werden. Dann kann ja keine Rechnung ausgeführt werden. Weiter wird doch hier ausgeführt das der Punkt in einer Zahl mitteln der Programmzeile
lblAusgabe.Text = Convert.ToDouble(txtEingabe.Text) * 2
gewandelt wird. Siehe Listing 2.10
Das Funktioniert aber nicht. Es Funktioniert aber mit deinem Zusatz.
Fehlt also dein Zusatz nicht in der oben genannten Programmierzeile ?
Ansonsten habe ich die Funktion eines Textfeldes verstanden. | |
Re: Konvertieren von Zahlen | | | Autor: Manfred X | Datum: 04.12.20 11:31 |
| Hallo!
Eingegebene Strings überprüft man ggf. explizit darauf, ob sie
sich in einen Zahlenwert umwandeln lassen.
Als Alternative kann man einen Eingabefilter setzen, der dem
Benutzer ein bestimmtes Format vorgibt (z.b. MaskedTextBox).
Eine explizte Prüfung der Konvertierbarkeit einer Zeichenfolge
bilden die TryParse-Methoden der numerischen Datentypen
(z.B. Double.Tryparse). | |
Re: Konvertieren von Zahlen | | | Autor: WKaH | Datum: 05.12.20 11:24 |
| Hallo Manfred X,
vielen Dank für deine Antwort. Das ist sicher richtig was du schreibst.
Das beantwortet aber nicht meine Frage.
In dem Handbuch was ich habe steht drin, das der String z.B 702.4
mit der Programmzeile
lblAusgabe.Text = Convert.ToDouble(txtEingabe.Text) * 2
in 702,4 gewandelt wird.
Das Ergebnis müßte also 1404,8 und nicht 14048 sein.
Und das ist das was ich nicht verstehe. Oder wird mit der Programmzeile
die Zahl mit den Punkt nicht in einer Zahl mit einem Komma gewandelt? | |
Re: Konvertieren von Zahlen | | | Autor: Kuno60 | Datum: 05.12.20 15:05 |
| Hallo WKaH,
in dem von dir angegebenen Handbuch steht nicht drin, dass die Eingabe eines Punktes (702.4) mit Convert.ToDouble in 702,4 gewandelt wird.
In Deutschland wird das Komma als Dezimaltrennzeichen und der Punkt als Zifferngruppierung verwendet und deshalb wird bei der Eingabe und Ausgabe auch nur das Komma als Dezimaltrennzeichen akzeptiert (Windows-Einstellung).
Beim Programmieren und in Internet-Url's wird ein kulturunabhängiges Format verwendet. Dann ist der Punkt das Dezimaltrennzeichen. In diesem Fall wird aber kein Komma akzeptiert! | |
Re: Konvertieren von Zahlen | | | Autor: Manfred X | Datum: 06.12.20 16:12 |
| Hallo!
EffEff hatte Deine diesbezügliche Frage beantwortet.
Du musst beim Konvertieren die Culture-Einstellungen beachten.
Die Convert- und Parse-Methoden bieten dafür optionale Parameter. | |
Re: Konvertieren von Zahlen | | | Autor: WKaH | Datum: 08.12.20 10:32 |
| Hallo Manfred X,
vielen Dank für deine Ausführungen. Da ich Anfänger bin sieh mir bitte mein Nichtwissen nach.
Gruß WKaH | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|