ich lese schon eine Weile im Forum mit, habe auch schon einiges in VBA programmiert, aber irgendwie platzt bei mir gerade nicht der Knoten für mein Problem.
Ich hoffe ihr könnt mir helfen :)
Hier der Teil meines Codes, der partout nicht will bzw. bei dem hin und wieder der gefürchtete Gleitkommafehler auftritt.
test_double = overall_worktime
test_double = standard_time_array((((day_column - 2) / 5) + 1), 3)
test_double = overall_worktime - standard_time_array((((day_column - 2) / 5) + 1), 3)
Wie ihr vielleicht schon an den Namen der Variablen erkennt, muss ich mit Zeiten rechnen.
Da Zeiten ja so eine Sache sind, habe ich sie "umgerechnet" indem ich die Zeiten mit 24 multipliziere, daraus ergeben sich vorwiegend Dezimalzahlen (7.5, 8.5, 9, etc.)
Da ich nicht davon ausgehen kann, dass immer schöne glatte Zahlen rauskommen sind die Variable als Double deklariert.
In meinem "Problemfall" sind sie allerdings glatt aber es kommt eine sehr unschöne Zahl als Ergebnis der Subtraktion heraus.
overall_worktime ist eine glatte 5, steht auch genau so im Locals-Fenster während der Code läuft.
Das gleich gilt für den Wert im Array.
Nun will ich die beiden Subtrahieren -> Erwartungshaltung: 5 - 5 = 0
Ich vermute es liegt am Gleitkommafehler, das hier bei Excel = -8,88178419700125E-16 rauskommt.
Trage ich nun die Zeiten in Excel Zellen ein, kommt der Fehler nicht...
A1 Startzeit: 9:00
B1 Endzeit: 14:00
C1 = A1*24
D1= B1*24
E1 = D1 -C1 = 5
A2 Soll_Startzeit: 9:00
B2 Soll_Endzeit: 14:00
C2 = A2*24
D2= B2*24
E2 = D2-C1 = 5
F1 = E2 - E1 = 0
Um Das "Anzeigeproblem" auszuschließen, habe ich mir 6 Nachkommastellen anzeigen lassen -> alles ganz normale (runde) Zahlen...
Bei den Uhrzeiten 07:30 bis 16:00 mit Abzug der 30Min Pause, kommt eine saubere 0 raus...
Mappe und kompletten Code kann/darf ich leider nicht zur Verfügung stellen und ich weiß, dass es damit viel schwerer ist den Fehler zu finden, hoffe ihr könnt trotzdem helfen...
LG
Taraniel