Subtraktion

psychomama

Mitglied
Hallo zusammen.
Ich bin gerade etwas ratlos und deshalb möchte ich euch um Hilfe bitten.
Hier mein Code-Ausschnitt:

Code:
Dim betr, betrNeu, betrGanz As Double

'Variablen werden im Programm mit diesen Werten gefüllt
'betr = 45,01
'mww = 0,19

            betrGanz = Fix(betr)
            If (betr - betrGanz) = 0.01 Then
                MsgBox ("0,01 zu viel")
                betrNeu = (betr - 0.01) / (100 + (100 * mww)) * 100
                If Aol_Roundcc(betrNeu) = nbetr Then
                    MsgBox ("Betrag wurde geändert")
                    betr = betrNeu
                End If
            ElseIf (betr - Fix(betr)) = 0.99 Then
                MsgBox ("0,01 zu wenig")
                betrNeu = (betr + 0.01) / (100 + (100 * mww)) * 100
                If Aol_Roundcc(betrNeu) = nbetr Then
                    MsgBox ("Betrag wurde geändert")
                    betr = betrNeu
                End If
            End If

So. Wenn ich jetzt bei der 1. If-Abfrage bin bekomme ich bei der Subtraktion zwischen 45,01 und 45 das Ergebnis 9,99999998 -3E herraus. Was mache ich falsch?
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hallo,

das Ergebniss tritt wegen Rundungsungenauigkeiten auf, ist aber fast richtig. Jage das Ergebnis einfach durch eine Rundungsfunktion durch und runde auf 2 Stellen.

9,99999998 -3E == 0,00999999999....

Gruß
BK
 

ronaldh

Erfahrenes Mitglied
Im Übrigen ist die Dimensionierung so nicht richtig. Ich vermute, dass
betr, betrNeu, betrGanz alle als Double dimensioniert sein sollen.
Daaklappt so aber nicht, da musst Du das so machen:
Visual Basic:
Dim Betr as double, betrNeu as double, betrGanz as Double

Ansonsten werden in VB6 die ersten beiden Felder als Object dimensioniert.