Falscher Wert - kaufmännisches Runden
Hallo!
Ich habe ein Problem mit dem käufmannischen Runden.Dazu habe ich mir die hier von shima gepostete Funktion benutzt. Soweit so gut. Jetzt ist ein weiteres Problem aufgetreten. Wenn ich folgende Formel berechnen lasse: Betrag * UstSatz / (100 * UstSatz) 52,83 * 20 / (100 * 20) = 8,805 (kaufm. gerundet = 8,81) Lasse ich es mit der besagten Funktion Runden (RoundX) kommt da 8,80 heraus. Habe die Funktion mal zerlegt und stelle fest, dass er bei der int. Funktion Frac bei 880,5 (Wert * 100 wg. 2 Stellen nach dem Komma) statt 0,5 0,4999999999997... ausgibt. Das mal 2 ergibt keine 1. Und somit rundet er bei 5 nicht auf. Das witzige ist, bei anderen Teilen meines Programms macht er es richtig. Wie ist denn sowas zu erklären? Danke, für die Tipps! Stephan |
AW: Falscher Wert - kaufmännisches Runden
Ich vermute mal, du benutzt nicht Currency ;) das wäre der richtige DatenTyp für deine Berechnung.
Die anderen haben aufgrund des Fließkommas diese Ungenauigkeiten. |
AW: Falscher Wert - kaufmännisches Runden
Bei den Fließkommadatentypen Single, Double und Extended kommen häufig Ungenauigkeiten zustande.
Für sowas solltest du einen Festkommadatentyp nehmen: Currency. |
AW: Falscher Wert - kaufmännisches Runden
Mal abgesehen davon, daß bei deiner Aufgabe 0.53 rauskommt (man sollte das * im Nenner durch ein + ersetzen!), kommt bei mir gleich das Richtige raus. trotzdem plädiere ich in diesem Fall auch für Currency.
|
AW: Falscher Wert - kaufmännisches Runden
@Uwe: Stimmt... da war wieder der Finger schneller als das Gehirn.:)
Ja, ich habe das jetzt auf Currency umgestellt und siehe da: Es läuft! Danke! Stephan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz