Hallo,
ich habe ein Problem beim Rechnen in Access.
In einer Tabelle ist eine Zahl im Format Double gespeichert, diese Zahl wird in einem Formular angezeigt, wenn ich nun in diesem Formular z.B. 20,49 eingebe wird diese im Formular auch so angezeigt. Alles OK. Wenn ich mir aber aus der Tabelle Diese Zahl mit 10 Kommastellen anzeigen lasse steht dort 20,4873452761. Da ich mit relativ genauen Zahlen arbeiten muss führt diese regelmäßig zu Fehlern. ACCESS 2000 und ACCESS 2010 haben das gleiche Problem deswegen kann das ja nur „irgendeine Einstellung“ sein.
Hallo Frank,
das Problem mit dem Datentyp Double ist, dass dieser „nur“ mit 15 Dezimalstellen rechnet. Für genauere Ergebnisse ist ein Datentyp erforderlich, der mit 30 oder mehr Dezimalstellen rechnet. Einen solchen Datentypen gibt es in den mir bekannten Access-Versionen jedoch nicht.
Es gibt Software aus dem wissenschaftlichen und technischen Bereich, die mathematische Berechnungen mit hoher Genauigkeit ausführen.
Gruß
Horst Müller
Versuch es mal mit dem Datentyp „Dezimal“
Wenn es dann nicht funzt, weiß ich auch nicht weiter.
Aus leidvoller Erfahrung seit Windows 3.11 weiß ich allerdings, dass ein PC nie genau rechnen kann.
Die Genauigkeit liegt nun mal bei nur 99,98 %
In den Naturwissenschaften wäre das ein zu vernachlässigender Fehler. Bei den Bänkern geht es natürlich nicht durch, wenn ich auf 100 € 2 Ct zu wenig bekomme.
Aber Lösungen wären aufwendig und fehleranfällig:
Zwei Felder, eines für € und eines für Ct als Ganzzahl formatiert.
Hallo,
dieser Fehler tritt bei mir nicht auf. Eingabe von 20,49 im Formular wird so gespeichert in der Tabelle und dort als 20,49 angezeigt, auch bei 10 Nachkommastellen. Wenn es Rundungsfehler wären, wäre der Unterschied bedeutend kleiner. Wird die Zahl per Code zwischengespeichert?
Von mir aus können Sie mir auch ein Beispiel einer Datenbank mit so einem Fehler schicken: [email protected]
Mfg
meusbur2
Hallo Frank,
solltest Du nur ein Optischesproblem bei der Anzeige der Zahlen haben, dann kannst Du bei der Tabelle die Ansicht auf 2 Nachkommastellen setzen. Wenn Du die Zahl aber runden möchtest, dann muss bei der Funktion, die die Werte speichert noch der Rundungsschritt eingefügt werden. Ab 2000 gibt es dafür die Funktion „Round“.
Gruss
Thomas
Hi,
ich weiß nicht recht, was dein Problem ist.
Wenn du die Zahlen anders angezeigt haben willst, ändere im Entwurf die Formateigenschaften des Felds.
Wenn du die Zahlen runden willst, tu das. Ich bin zu lang raus, um zu wissen, obs dafür ne fertige Funktion gibt oder du selber ran musst. f(x)=CInt(100*x+0,5)/100 glaub ich.
Good luck
Kannst du mehr Informationen geben über das Problem?
Die Zahl in Haupttabelle ist z.B. 20,49 und in Abfrage wird als 20,4873452761 angezeigt oder da Steht schon 20,4873452761 und in Abfrage wird als 20,49 angezeigt.
In den zweiten Fall in Abfrage - Entwurfsansicht / Feldeigenschaften Format eingeben z.B. #.##0,0000000000 und Dezimalstellenanzeige = 10.
Wenn den Zahl ist tatsächlich =20,49 aber als 20,487…. angezeigt habe keinen Lösung und selbst konnte ich den Fehler nicht reproduzieren.
Gruß
Cesar
Hy,
hat sich erledigt.
Der Fehler lag in einer Abfrage.
Typischer 70cm Fehler!!
Vielen Dank für Deine Mühe!
Frank
Hy,
hat sich erledigt.
Der Fehler lag in einer Abfrage.
Typischer 70cm Fehler!!
Vielen Dank für Deine Mühe!
Frank.
Hy,
hat sich erledigt.
Der Fehler lag in einer Abfrage.
Typischer 70cm Fehler!!
Vielen Dank für Deine Mühe!
Frank .
Hy,
Danke!
Der Fehler lag in einer Abfrage.
Wie von Dir vermutet mit Round zu beseitigen.
Typischer 70cm Fehler!!
Vielen Dank für Deine Mühe!
Frank
Hy,
hat sich erledigt.
Der Fehler lag in einer Abfrage.
Typischer 70cm Fehler!!
Vielen Dank für Deine Mühe!
Frank …
Hy,
hat sich erledigt.
Der Fehler lag in einer Abfrage.
Typischer 70cm Fehler!!
Vielen Dank für Deine Mühe!
Frank …
Hallo,
willst du nun mit der zweistelligen oder der zehnstelligen Zahl weiter rechnen?
kfm. oder beim rechnen mit Währungen reichen ja 2 Nachkommstellen.
Angezeigt werden im Normalfall 2 Nachkommastellen, intern werden aber in Abhängigkeit zum Datenformat die Zahlen mit den kompletten Nachkommastellen gespeichert.
Wenn du mit 2 Nachkommastellen rechen willst, dann musst du die Zahlen runden, dafür kann ich dir im Bedarfsfall Bespiele zur Verfügung stellen.
Gruß
Peter
Hy,
hat sich erledigt.
Der Fehler lag in einer Abfrage.
Ich habe auf Einzelwerte die MWSt. aufgeschlagen und dann den Gesamtwert aus diesen Werten gebildet. Das führt natürlich zu Fehlern weil ja 19,40€ + MWSt nicht 23,09€ sind sondern 23,086€ diese Abweichung summiert sich natürlich mit der Anzahl der Posten.
Typischer 70cm Fehler!!
Vielen Dank für Deine Mühe!
Frank
Hallo Frank,
ich habe das ganze bei mir mit Access 2007 versucht. Bei mir zeigt Access dieses Verhalten nicht.
Stell doch die Tabelle und das Formular als DB ein oder sende sie mir per Mail. Ich schau dann mal wo die Unterschiede bei den Eigenschaften der Felder liegen.
Gruß
Holger
Hallo Frank,
das liegt daran, dass Dezimalbrüche nicht ganau im Binärsystem dargestellt werden können. Daher für genaue Werte mit Dezimal oder Währung arbeiten.
Gruß
Vincenz
Hy,
hat sich erledigt.
Der Fehler lag in einer Abfrage.
Ich habe auf Einzelwerte die MWSt. aufgeschlagen und dann den Gesamtwert aus diesen Werten gebildet. Das führt natürlich zu Fehlern weil ja 19,40€ + MWSt nicht 23,09€ sind sondern 23,086€ diese Abweichung summiert sich natürlich mit der Anzahl der Posten.
Typischer 70cm Fehler!!
Vielen Dank für Deine Mühe!
Hallo,
vielleicht solltest Du Dein Problem etwas genauer formulieren, ich kann es jedenfalls nicht nachvollziehen. Wenn ich 20,49 eingebe, wird auch 20,49 ausgegeben und nicht 20,48… Wird der Wert im Formular vielleicht irgendwie errechnet? Das könnte eine Erklärung sein.
Gruß
was genau ist denn Dein Problem?
A) daß im Formular Stellen abgeschnitten werden oder B) daß in der Tabelle mehr dargestellt wird?
Ich schätze, die Zahl im Formular hat nicht jemand direkt eingegeben, sondern die wurde berechnet? Wenn das so ist, dann hast Du das Formularfeld wohl eingestellt, daß es auf 2 Nachkommastellen kürzen soll, und dadurch wird es logisch ungenauer…
sorry, habe Deine Anfrage eben erst gesehen…