VisualBasic Problem mit Addierung von Nachkommastellen
Hallo zusammen,
Ich habe ein Problem bei meinem Programm. Um eine Oberfläche zu berechnen lasse ich aus verschiedene Werte mit Hilfe von Math.Sqrt eine Wurzel ziehen.Das Ergebnis davon besitzt dann xxx Nachkommastellen.
Das Problem ist wenn man mehrere Ergebnisse mit Nachkommastellen zu einer zusammen Rechnen lassen will .. kommen immer nur abgerundete GANZE Ergebnisse raus.
Hier ein vereinfachtes Beispiel meines Problems.
Source-Code:
Dim Länge As String = TextBox1.Text
Dim Breite As String = TextBox2.Text
Dim Höhe As String = TextBox3.Text
Dim K As String = Math.Sqrt(Val(Breite) ^ 2 / Val(4) + Val(Höhe) ^ 2)
Dim O As String = Val(2) * K * Val(Länge)
TextBox4.Text = O
TextBox5.Text = O
TextBox6.Text = Val(O) + Val(O)
Danke schonmal
Ich habe ein Problem bei meinem Programm. Um eine Oberfläche zu berechnen lasse ich aus verschiedene Werte mit Hilfe von Math.Sqrt eine Wurzel ziehen.Das Ergebnis davon besitzt dann xxx Nachkommastellen.
Das Problem ist wenn man mehrere Ergebnisse mit Nachkommastellen zu einer zusammen Rechnen lassen will .. kommen immer nur abgerundete GANZE Ergebnisse raus.
Hier ein vereinfachtes Beispiel meines Problems.
Source-Code:
Dim Länge As String = TextBox1.Text
Dim Breite As String = TextBox2.Text
Dim Höhe As String = TextBox3.Text
Dim K As String = Math.Sqrt(Val(Breite) ^ 2 / Val(4) + Val(Höhe) ^ 2)
Dim O As String = Val(2) * K * Val(Länge)
TextBox4.Text = O
TextBox5.Text = O
TextBox6.Text = Val(O) + Val(O)
Danke schonmal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 285502
Url: https://administrator.de/forum/visualbasic-problem-mit-addierung-von-nachkommastellen-285502.html
Ausgedruckt am: 22.04.2025 um 11:04 Uhr
3 Kommentare
Neuester Kommentar
Aus der Beschreibung der VAL Funktion:
Die Val-Funktion erkennt nur den Punkt (.) als gültiges Dezimaltrennzeichen. Wenn Sie ein anderes Dezimaltrennzeichen benötigen (z. B. für internationale Anwendungen), verwenden Sie stattdessen die Funktion CDbl oder CInt, um eine Zeichenfolge in eine Zahl zu konvertieren.
Außerdem:
Wenn ich rechnen will, dann speichere ich die Zahlen, mit denen ich rechnen will, als Zahlen und konvertiere es erst dann in einen String wenn ich es ausgeben will.
Jedesmal konvertieren kann ja nur zu Fehlern führen. Von der Performance ganz zu schweigen.
Die Val-Funktion erkennt nur den Punkt (.) als gültiges Dezimaltrennzeichen. Wenn Sie ein anderes Dezimaltrennzeichen benötigen (z. B. für internationale Anwendungen), verwenden Sie stattdessen die Funktion CDbl oder CInt, um eine Zeichenfolge in eine Zahl zu konvertieren.
Außerdem:
Wenn ich rechnen will, dann speichere ich die Zahlen, mit denen ich rechnen will, als Zahlen und konvertiere es erst dann in einen String wenn ich es ausgeben will.
Jedesmal konvertieren kann ja nur zu Fehlern führen. Von der Performance ganz zu schweigen.

Moin,
weil Val() hier nur Zahlen mit einem Punkt als Dezimalstelle in eine Zahl konvertieren kann. Nehm besser die Konvertierungsfunktionen von Double oder Float je nach maximalen Zahlengrößen.
oder
oder
Gruß grexit
weil Val() hier nur Zahlen mit einem Punkt als Dezimalstelle in eine Zahl konvertieren kann. Nehm besser die Konvertierungsfunktionen von Double oder Float je nach maximalen Zahlengrößen.
Double.Parse(Breite)
Convert.ToDouble(Breite)
CDbl(Breite)