AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Seltsamer Effekt mit Double
Thema durchsuchen
Ansicht
Themen-Optionen

Seltsamer Effekt mit Double

Ein Thema von Privateer3000 · begonnen am 14. Mai 2010 · letzter Beitrag vom 14. Mai 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#1

Seltsamer Effekt mit Double

  Alt 14. Mai 2010, 14:20
Datenbank: MDB • Zugriff über: ADO
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
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Seltsamer Effekt mit Double

  Alt 14. Mai 2010, 14:23
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Seltsamer Effekt mit Double

  Alt 14. Mai 2010, 15:57
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?
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.079 Beiträge
 
Delphi 12 Athens
 
#4

Re: Seltsamer Effekt mit Double

  Alt 14. Mai 2010, 16:16
Fließkommazahlen werden aber nicht im Dezimalsystem gespeichert, sondern im Dualsystem und da ist 3.1 kein "sehr genauer" Wert
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

Re: Seltsamer Effekt mit Double

  Alt 14. Mai 2010, 16:18
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.079 Beiträge
 
Delphi 12 Athens
 
#6

Re: Seltsamer Effekt mit Double

  Alt 14. Mai 2010, 16:20
Zitat von DeddyH:
oder gleich einen großen Integer-Typen und den beim Auswerten/Anzeigen durch 100 teilen.
Currency (Int64 / 10000)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Seltsamer Effekt mit Double

  Alt 14. Mai 2010, 16:22
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 :]
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Seltsamer Effekt mit Double

  Alt 14. Mai 2010, 16:25
Zitat von DeddyH:
... oder gleich einen großen Integer-Typen und den beim Auswerten/Anzeigen durch 100 teilen.
Jetzt bitte nicht lachen, bisher habe ich es genauso gemacht. Ich wollte es halt nun gleich in Fließkommas eintragen.
Ok, also gibt es kaum andere Möglichkeiten. Currency nimmt man doch nur für Währungen?!

Danke Leute, euch allen
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

Re: Seltsamer Effekt mit Double

  Alt 14. Mai 2010, 16:25
Wie gesagt, DECIMAL ginge auch.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#10

Re: Seltsamer Effekt mit Double

  Alt 14. Mai 2010, 17:02
Die DP braucht einen schnelleren Server!!! Das ist heute wieder furchtbaaar laaangsaaam!!!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 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