Falsche Berechnungen, keine Ahnung warum
Heiko Merz
Hallo zusammen,ich habe ein sehr merkwürdiges Problem.
In den Belegen berechnen wir gewisse Faktoren über Customize.
Als Beipspiel wird die Anzahl der Säcke berechnet über ein Gewicht, dass man eingibt, geteilt durch das Sackgewicht.
Hierbei gibt es oft Kommazahlen. Aus diesem Grund nehmen wir hier nur die Zahl vor dem Komma als Anzahl der Säcke.
Beispiel: Sackgewicht 9,5 kg, Menge 100 kg. 100kg / 9,5kg = 10,526 Säcke. Als Wert sollen 10 Säcke genommen werden.
Der Code hierzu sieht folgendermaßen aus:
double nofbag = VME / fac3;
int nofbagRounded = (int)nofbag;
Wobei VME für die Menge steht (Beispiel oben: 100kg) und fac3 steht für das Sackgewicht (Beispiel oben: 9,5kg).
Das hat alles bis jetzt gut gepasst. Nur habe ich jetzt ein paar Konstellationen, wo es nicht hinhaut.
VME = 0,1kg, fac3 = 0,1 --> Nofbag = 0,1 / 0,1 = 1 --> PASST NofbagRounded = 1 --> PASST
VME = 0,2kg, fac3 = 0,1 --> Nofbag = 0,2 / 0,1 = 2 --> PASST NofbagRounded = 2 --> PASST
VME = 0,3kg, fac3 = 0,1 --> Nofbag = 0,3 / 0,1 = 3 --> PASST NofbagRounded = 2 --> PASST NICHT
VME = 0,4kg, fac3 = 0,1 --> Nofbag = 0,4 / 0,1 = 4 --> PASST NofbagRounded = 4 --> PASST
VME = 0,5kg, fac3 = 0,1 --> Nofbag = 0,5 / 0,1 = 5 --> PASST NofbagRounded = 5 --> PASST
VME = 0,6kg, fac3 = 0,1 --> Nofbag = 0,6 / 0,1 = 6 --> PASST NofbagRounded = 6 --> PASST
VME = 0,7kg, fac3 = 0,1 --> Nofbag = 0,7 / 0,1 = 7 --> PASST NofbagRounded = 6 --> PASST NICHT
VME = 0,8kg, fac3 = 0,1 --> Nofbag = 0,8 / 0,1 = 8 --> PASST NofbagRounded = 8 --> PASST
....
Des weiteren passt es nicht bei 1,2 und bei 1,9. Mehr habe ich nicht getestet.
Hat jemand eine Idee, woran das liegen könnte ?
Michael Egloff
Hallo,es gibt eine Funktion zum Runden, vielleicht bringt die was:
int nofbagRounded = (int)Math.Floor(nofbag);
0
Please sign in to leave a comment.
Comments
0 comments