Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: ReneB am August 06, 2021, 12:21:57

Titel: Dsum rechnet falsch
Beitrag von: ReneB am August 06, 2021, 12:21:57
Hallo Leute,

ich bin auf ein Problem gestossen, welches sich mir nicht so recht erklärt. Dieses Problem tritt übrigens nur bei Zahlen mit 0,0... auf. Ich habe einen Vergleichswert 0,075 in einer Tabelle.

Über eine Eingabemaske (Formular) werdem Werte eingetragen und in einer anderen Tabelle gespeichert.
Bei jeder Buchung vergleiche ich beide Werte mit DSum. Sobald die eingetragnenen Werte den Vergleichswert von 0,075 übersteigen, geht eine Messagebox auf und informiert. Das funktioniert immer reibungslos ausser bei 0,0.. Werten, denn hier springt die Messagebox bereits an, obwohl der Vergleichswert noch nicht überschritten wurde. Zwei Buchungen zu je 0,025 kann ich machen, doch sobald ich ein drittes mal versuche 0,025 zu buchen schlägt die Messagebox an. Ich habe die Berechnung mal ausgeschalten und die drei Werte über Tabellensumme überprüft. Es sind exakt 0,075.

Kann mir jemand erklären, wo das Problem liegt?

Danke vorab

Rene

Titel: Re: Dsum rechnet falsch
Beitrag von: MzKlMu am August 06, 2021, 12:57:19
Hallo,
typisches Problem mit einer Fließkommaberechnung.
ZitatEs sind exakt 0,075.
Das kann bei einer Fließkommadarstellung bezweifelt werden. Wenn Du 0,075 siehst, kann da in Wirklichkeit durchaus 0,075000004 drin stehen. Das wäre dann größer als 0,075. Da wird nichts falsch gerechnet.
Welche Datentypen hast Du denn für die Felder in der Tabelle eingestellt ?
Sind Formate eingestellt (in der Tabelle und/oder im Formular) ?
Titel: Re: Dsum rechnet falsch
Beitrag von: ReneB am August 06, 2021, 13:05:29
Hallo

nun der Datentyp in den Tabellen ist jeweils "double" Dezimalstellen automatisch und im Formular steht unter Format "allgemeine Zahl" mit drei Dezimalstellen. Muss ich hier was ändern?
Die Zahlen sollten passen, denn die gebe ich ja händisch ein.

Danke imn Voraus.

Rene
Titel: Re: Dsum rechnet falsch
Beitrag von: DF6GL am August 06, 2021, 13:36:16
Hallo,

auch bei händischer Eingabe tritt der von Klaus beschriebene Effekt (Rundungen) bei Datentyp Double (Gleitkommazahlen) auf.

Ändere den Datentyp in "Währung", so dass sich eine Festkommazahl mit 4 Stellen hinter dem Komma ergibt.
Titel: Re: Dsum rechnet falsch
Beitrag von: ReneB am August 06, 2021, 13:43:49
Hallo,

danke für den Tip. Allerdings verstehe ich nicht warum Währung. Es handelt sich um eine einfach Zahl. Würde es reichen, wenn ich das Format auf Festkommazahl ändere in Tabellen und Formular?

Danke

Rene
Titel: Re: Dsum rechnet falsch
Beitrag von: Josef P. am August 06, 2021, 13:55:49
Hallo!

Der Währung-Datentyp ist keine Gleitkommazahl. Das ist im Prinzip eine Ganz-Zahl bei der gespeichert wird, an welcher Stelle das Dezimaltrennzeichen sein soll.
Gleiches gilt für den Datentyp Dezimal, welchen ich statt Währung verwenden würde, um die Anzahl der Dezimalstellen zu wählen.

zu "Format auf Festkommazahl":
Das Format ist nur für die Anzeige des Wertes zuständig und nicht für dessen Inhalt.

Viele Grüße
Josef
Titel: Re: Dsum rechnet falsch
Beitrag von: DF6GL am August 06, 2021, 13:57:49
Hallo,

nein...

Formate sind nur für die (meistens) visuelle Darstellung da und haben mit Datentypen nichts zu tun.

Datentypen definieren die interne Speicherungs-Methode von Zeichen, bzw. numerischen Daten und anderen Daten (--> Blop, OLE, Binärer Stream)
Titel: Re: Dsum rechnet falsch
Beitrag von: MzKlMu am August 06, 2021, 14:18:51
Hallo,
der Datentyp Double (Gleitkommazahl) ist für derartige Berechnungen völlig ungeeignet. Einer angezeigten Fließkommazahl mit Kommastellen kann man niemals trauen, wenn mit Format auch noch Kommastellen eingestellt sind erst recht nicht.
ZitatWürde es reichen, wenn ich das Format auf Festkommazahl ändere
Nein, (wie bereits gesagt). Ein Format änderst nichts an dem Wert der in der Tabelle gespeichert ist. Formateinstellungen haben nur Einfluss auf das was man sieht, aber nicht auf die eigentlichen Inhalte.
Die einfachste Version ist Währung zu verwenden, welche ja wie gesagt im Hintergrund eine Ganzzahl ist. Das Währungszeichen kann über die Formateinstellung ausgeblendet werden. Oder halt dezimal.

Zur Gleit/Fließkommaproblematik findest Du jede Menge Infos bei Google. Das Problem hat jeder Taschenrechner und auch Excel. Nur da wird es vertuscht.
Titel: Re: Dsum rechnet falsch
Beitrag von: ReneB am August 06, 2021, 14:53:26
Hallo Leute,

Ok dann stelle ich die beiden Tabellen auf dezimal um. Formular scheint also davon nicht betroffen zu sein.

Danke schon mal.

Rene
Titel: Re: Dsum rechnet falsch
Beitrag von: ReneB am August 09, 2021, 07:40:23
Guten Morgen,

habe alle Tabellen auf dezimal umgestellt und siehe da es scheint zu funktionieren.

Danke an Alle.

Schöne Woche Euch

Rene