Runden, Ausgabe ? 5,0 anstatt 5,5

BeAFrog

Grünschnabel
Hallo,

ih hab ein Problemchen, das zu einem Problem mutiert. Ich finde den Fehler einfach nicht und zwar berechne ich den Notendurchschnitt und gebe ihn (in einer Textbox) aus. Allerdings ist die Ausgabe etwas komisch. Es wird alles in 1/2 Schritten ausgespuckt, dazwischen das nicht. D.h. ,5 - 1 - 1,5 - 2 - 2,5 ...

Hier ist der Relevante Code sicher nur eine Kleinigkeit aber ich finde es einfach nicht.

In meinem Fehlerbeispiel wäre txt1 5,5 was auch so übergeben wird und 5 wird ausgespuckt. :confused:


Besten Dank
BeAFrog

Code:
    'Notenschnitt
    If Not (txtmnote.Text = "" And txtdnote.Text = "" And txtenote.Text = "" And txtsprnote.Text = "" And txtgnote.Text = "" And txtwnote.Text = "" And txtbnote.Text = "" And txtcnote.Text = "" And txtpnote.Text = "" And txtinote.Text = "" And txtknote.Text = "" And txtsnote.Text = "") Then
        txtschnitt.Text = Format(Schnittberechnung(txtmnote.Text, txtdnote.Text, txtenote.Text, txtsprnote.Text, txtgnote.Text, txtwnote.Text, txtbnote.Text, txtcnote.Text, txtpnote.Text, txtinote.Text, txtknote.Text, txtsnote.Text), "0.0")
    Else
        txtschnitt.Text = ""
    End If


'Berechnung Notenschnitt
    Function Schnittberechnung(txt1, txt2, txt3, txt4, txt5, txt6, txt7, txt8, txt9, txt10, txt11, txt12 As String) As Double
        Dim FZähler As Integer
        FZähler = 0
        
        If txtmnote.Text <> "" Then FZähler = FZähler + 1
        If txtdnote.Text <> "" Then FZähler = FZähler + 1
        If txtenote.Text <> "" Then FZähler = FZähler + 1
        If txtsprnote.Text <> "" Then FZähler = FZähler + 1
        If txtgnote.Text <> "" Then FZähler = FZähler + 1
        If txtwnote.Text <> "" Then FZähler = FZähler + 1
        If txtbnote.Text <> "" Then FZähler = FZähler + 1
        If txtcnote.Text <> "" Then FZähler = FZähler + 1
        If txtpnote.Text <> "" Then FZähler = FZähler + 1
        If txtinote.Text <> "" Then FZähler = FZähler + 1
        If txtknote.Text <> "" Then FZähler = FZähler + 1
        If txtsnote.Text <> "" Then FZähler = FZähler + 1
                    
        Schnittberechnung = ((Val(txt1) + Val(txt2) + Val(txt3) + Val(txt4) + Val(txt5) + Val(txt6) + Val(txt7) + Val(txt8) + Val(txt9) + Val(txt10) + Val(txt11) + Val(txt12)) / FZähler)
    End Function
 
Zuletzt bearbeitet:
Der Fehler liegt darin, dass bei VB das Dezimaltrennzeichen der Punkt und nicht der Beistrich ist, ein Val() sieht daher das Komma als Nicht-Nummerisches Zeichen an und ignoriert daher alles dahinter.

Du musst daher entweder alles mit dem Punkt als Dezimaltrennzeichen eingeben oder vor der Auswertung in allen Textfeldern das Komma durch einen Punkt ersetzen.


Der Doc!
 
Hallo und danke.


Versteh es allerdings nicht wirklich, da ich eine ähnliche Berechnung (die Note aus 4 Einzelnoten) habe, die problemlos funktioniert.

Na mal schaun wie ich dsa am einfachsten löse.

Grüße
BeAFrog
 
Zurück