Hallo,
ich schreibe zurzeit an einem Kassenprogramm (oder wie auch immer man das bezeichnen kann).
Dafür gibt es die Möglichkeit Einheiten anzulegen, wobei ein Mindestwert einzugeben ist.
Das funktioniert auch alles super...
Jetzt habe ich aber das Problem, dass ich beim Eintragen eines Artikels auf die Rechnung überprüfen will, ob die eingegebene Anzahl ein Vielfaches des Mindestwertes der jeweiligen Einheit ist.
Habe es so probiert, das arbeitet aber aufgrund der "Rundungsfehler" bei reellen Zahlen nicht immer zuverlässig.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| Unity := RoundTo(AppMgr.Prices.GetArtUnityData(AppMgr.Prices.GetArtUnity(ArtID)).Minimum, -2); ArtAdded := RoundTo(StrToFloatDef(LCount.Text, 1) / Unity, -2); if RoundTo(ArtAdded * Unity, -2) <> StrToFloatDef(LCount.Text, 1) then begin ArtID := 0; ArtAdded := -1; end; |
Obwohl ich die Werte auf zwei Nachkommastellen runde, arbeitet Delphi mit x Stellen(z.B. 0,01 = 0,0099999997765). Und dadurch entsteht dann natürlich der Fehler.
Habe ich vielleicht etwas übersehen oder kennt jemand eine andere Möglichkeit, um zu überprüfen ob eine Zahl ein Vielfaches einer reellen Zahl ist?
Gruß MaPsTaR
Liebe Kinder, es stimmt ... solnage auch nur der ertse und lezte Bchutsabe rihctig ist und alle andreen Bcuhsatben irgendwie vorahnden sind,
dann knan man es dennonch lesen, also macht nur weiter so, wir verstehen euch schon