![]() |
AW: Round gibt unterschiedliche Nachkommastellen zurück
Wieder ein mal die Ungenauigkeit von Floats. Die DP ist voll davon ;)
Ob du in der Query rundest oder nicht ist quasi egal: Zur Übergabe in dein Programm muss der Wert ja doch wieder in einen Float gepackt werden, wodurch die prinzipbedingte Ungenauigkeit wieder zuschlägt. Die einzig sinnvolle Stelle für die Rundung ist genau der Zeitpunkt der Darstellung, d.h. entweder DisplayFormat bei DataSets oder mittels FloatToStrF() oder Format() wenn du den String selber bauen möchtest. |
AW: Round gibt unterschiedliche Nachkommastellen zurück
Hallo,
0.3 ist eben in eime Float nich speicherbar. Alternativ währe hier eventuell ein Festkommaformat angebracht - In Firebird z.B Numeric(18,4) und in Delphi z.B. Currency. LG, Daniel |
AW: Round gibt unterschiedliche Nachkommastellen zurück
Moin,
Numeric ist eine gute Idee. Das erklärt mir zwar noch nicht, warum das Round doch das Rundungsgeraffel liefert aber für den Alltagsgebrauch ist das ok :thumb: Danke, Messie |
AW: Round gibt unterschiedliche Nachkommastellen zurück
Zitat:
Willst du exakte Dezimalwerte, brauchst du ein Festkommaformat. Wissenschafliche Abhandlung zu dem Thema ![]() Dies sollte man zumindest in Grundzügen verstehen, sonst verzapft man schnell einige Bugs! |
AW: Round gibt unterschiedliche Nachkommastellen zurück
Bezüglich des Currency in Delphi ist die Erklärung auch ganz einfach.
Currency ist in Wirklichkeit ein Int64, bei welchem die understen 4 Dezinalstellen als Nachkommastellen angesehn werden ( i / 1000 ), womit es innerhalb aller Dezimalstellen keine Rundungsfehler geben kann. Darum nennt sich das auch Currency aka "Währung", weil gerade dort besser nicht falsch gerechnet werden sollte. |
AW: Round gibt unterschiedliche Nachkommastellen zurück
Zitat:
Man sollte sich also gut überlegen wo man welche Genauigkeit braucht. Es hat einen Grund warum es beide Datentypen gibt. |
AW: Round gibt unterschiedliche Nachkommastellen zurück
Wieso ungenau?
Es ist auf die definierten 4 Nachkommastellen zu 100% ganz genau. |
AW: Round gibt unterschiedliche Nachkommastellen zurück
Zitat:
Und es sieht ja dann so aus, als würde das TCRDBgrid tatsächlich eine Kopie im Speicher einrichten, denn das hat ja die Nachkommastellen. Ich weiß nicht, was in Flamerobin verwendet wird, aber da habe ich den Effekt ja nicht. Da ich ja recht neu im DB-Thema bin: wie wird das denn im Allgemeinen von den Komponenten gehandhabt? Werden die Queryergebnisse jeweils kopiert oder sind das Pointer/Verweise? Danke, Messie |
AW: Round gibt unterschiedliche Nachkommastellen zurück
Zitat:
|
AW: Round gibt unterschiedliche Nachkommastellen zurück
Zitat:
Zitat:
Wenn ich Jezt Heizölhändler bin und sagen wir von meinem Großhändler Öl Kaufe für 0,63145 € / Liter. Ich ordere also 100.000 Liter ... wieviel Kostet das dann? 63.145 € oder 63.140 €? Wer zahlt meinem Großhändler die Fehlenden 5 €? Du der du mir das Programm Programmiert hast? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz