vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Konvertieren 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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)?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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).
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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