tutorials.de Buch-Aktion 02/2012
Like Tree1Danke
  • 1 Beitrag von Bratkartoffel
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
518
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    psychomama psychomama ist offline Mitglied Silber
    Registriert seit
    Sep 2008
    Beiträge
    50
    Hallo zusammen.
    Ich bin gerade etwas ratlos und deshalb möchte ich euch um Hilfe bitten.
    Hier mein Code-Ausschnitt:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    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?
     

  2. #2
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.298
    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
    psychomama bedankt sich. 
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  3. #3
    psychomama psychomama ist offline Mitglied Silber
    Registriert seit
    Sep 2008
    Beiträge
    50
    Vielen Dank!
    Da wäre ich von alleine nicht drauf gekommen.
     

  4. #4
    ronaldh ronaldh ist offline Mitglied Brillant
    Registriert seit
    Apr 2007
    Ort
    Hannover
    Beiträge
    912
    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:
    Code vb:
    1
    
    Dim Betr as double, betrNeu as double, betrGanz as Double

    Ansonsten werden in VB6 die ersten beiden Felder als Object dimensioniert.
     
    Nur tote Fische schwimmen mit dem Strom.

Ähnliche Themen

  1. JavaScript Subtraktion
    Von BolleF1 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 21.01.11, 15:03
  2. Matrizen Subtraktion in C
    Von RuhrBoy im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 25.11.09, 11:57
  3. Subtraktion von Gleitkommazahlen?
    Von hanni6al im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 08.05.09, 20:09
  4. addition / subtraktion auf var
    Von xeal im Forum Java
    Antworten: 9
    Letzter Beitrag: 23.01.06, 14:33
  5. MS Excel subtraktion
    Von to_be im Forum Office-Anwendungen
    Antworten: 6
    Letzter Beitrag: 27.02.04, 08:17