![]() |
Datenbank: MDB • Zugriff über: ADO
Seltsamer Effekt mit Double
Hallo Gemeinde,
ich habe einen seltsamen Effekt beim eintragen von Double Zahlen. Gegeben ist ein TDBGrid,eine Navileiste und die dazugehörigen Query und DataSource. Nun aktiviere ich per Navileiste das eingeben von Werten. Die zugeordnete Tabelle enthält ein Textfeld, eine Double-Feld und ein Boolsches Feld. Gebe ich nun zB 3,10 in das Feld mit dem Double ein, erscheint nach dem Speichern aber 3,09999990463257 im DBGrid. Wieso ändert Access eigenständig die Werte ab, obwohl eindeutig 3,10 oder 3,1 eingegeben wurde? Öffne ich per Access die Tabelle steht wiederum 3,1 drin. Liegt das nun an Access, dem DBGrid oder sonstwo? Grüße |
Re: Seltsamer Effekt mit Double
Hallo,
das liegt daran, dass ein Double nur einen ungefähren Wert speichert, im Gegensatz zu z.B. Integer. Per DisplayFormat kannst du ja ein eigenes Format nehmen (z.B. %.2f) Heiko |
Re: Seltsamer Effekt mit Double
Danke Hoika,
das ist echt komisch. Da 3,1 doch ein sehr genauer Wert ist, sieht 3,09999990463257 eher ungenau aus. Kann man die DB nicht dazu bringen "von Haus" zwei Nachkommastellen zu speichern? |
Re: Seltsamer Effekt mit Double
Fließkommazahlen werden aber nicht im Dezimalsystem gespeichert, sondern im Dualsystem und da ist 3.1 kein "sehr genauer" Wert
|
Re: Seltsamer Effekt mit Double
Mir fallen spontan 2 Möglichkeiten ein: statt double Decimal verwenden oder gleich einen großen Integer-Typen und den beim Auswerten/Anzeigen durch 100 teilen.
|
Re: Seltsamer Effekt mit Double
Zitat:
|
Re: Seltsamer Effekt mit Double
Die DP ist voll von Themen zur Ungenauigkeit von Floats, da wir das Thema fast wöchentlich haben. Die Suche sollte also reichlich Antworten dazu haben, was und warum das da um Ungenauigkeiten geht, und warum das auch überhaupt nichts mit der "genauen Eingabe" zu tun hat. Tip: Ein Double kann auch nur 2^64 Werte speichern wie ein Int64, hat aber einen erheblich größeren Werteberich. Irgendwo müssen da Lücken sein ;)
Für exakte Speicherung wären Festpunkttypen geeignet, die im Grunde nur Integer sind, bei denen intern automatisch ein Dezimalpunkt verwaltet wird. Hm, trotz 3-facher Redbox mal abgeschickt :] |
Re: Seltsamer Effekt mit Double
Zitat:
Ok, also gibt es kaum andere Möglichkeiten. Currency nimmt man doch nur für Währungen?! Danke Leute, euch allen |
Re: Seltsamer Effekt mit Double
Wie gesagt, DECIMAL ginge auch.
|
Re: Seltsamer Effekt mit Double
Die DP braucht einen schnelleren Server!!! Das ist heute wieder furchtbaaar laaangsaaam!!!
|
Re: Seltsamer Effekt mit Double
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:04 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 by Thomas Breitkreuz