Hi zusammen,
ich hätte mal eine generelle Frage bzgl. der Feldgröße beim Felddatentyp "Zahl"
Und zwar habe ich ein Umsatz-Feld.
Dieses habe ich als Zahl, Feldgröße "Double" mit dem Format "Standardzahl" formatiert.
Dezimalstellenanzeige "Automatisch"
Welchen Hintergrund hat die Dezimalstellenanzeige "Automatisch"?
Denn wenn ich mehr als 2 Nachkommastellen eingebe, werden mir diese gar nicht angezeigt.
Im Regelfall benötige ich nur 2 Nachkommastellen, es gibt aber Ausnahmen, bei denen ich bis zu 7 Nachkommastellen eintragen muss. Diese würde ich dann natürlich auch gerne sehen.
Jetzt kämpfe ich mit dem Problem, dass mit meiner aktuellen Einstellung nur 2 Nachkommastellen angezeigt werden. Ich würde aber auch ungern die Dezimalstellenanzeige auf 7 umstellen, da es dann, in den Fällen ohne oder nur mit wenigen Nachkommastellen, schnell unübersichtlich wird.
Kann mir jemand sagen wie ich ein solches Feld am besten formatiere?
Die Daten die in das Feld eingetragen werden, werden auch nochmals über eine Schnittstelle weiterverarbeitet. Es darf hier also auf keinen Fall gerundet oder irgendwas abgeschnitten werden.
Achso ... das Format "Standardzahl" habe ich auf Grund der 1000er Trennung gewählt, da es sich teilweise um recht hohe Werte handelt.
Hallo,
wenn Du 7 Stellen sehen willst, so musst Du 7 Stellen einstellen. Da gilt entweder alles oder oder nichts.
Die Einstellung "Auto" bei den Dezimalstellen bewirkt, dass die Einstellungen des Formats übernommen werden. Und Standardzahl hat nun mal nur 2 Kommastellen. Das Format bestimmt letztendlich die Anzeige. Bleibt das Format leer, bestimmt die Dezimalstellenanzeige die Ansicht. Aber dann hast Du keinen Tausenderpunkt Wenn Du diesen haben willst, musst Du das Format selbst bestimmen und
#.##0,0000000einstellen. Es werden aber immer 7 Stellen angezeigt.
1.234,0000000
1.345,2345000
1.236,3456789
Bzgl. der Kommastellen ist der Antwort von MzKlMu wenig hinzuzufügen. Nur: Evtl. kannst du in dem jeweiligen Formular je nach Bedarf (Kennzeichen im Datensatz) die Anzahl der Nachkommstellen per VBA umstellen von 2 auf 7.
Zitat von: dobby110 am August 08, 2022, 15:01:46Und zwar habe ich ein Umsatz-Feld.
Dieses habe ich als Zahl, Feldgröße "Double" mit dem Format "Standardzahl" formatiert.
[...]
Es darf hier also auf keinen Fall gerundet oder irgendwas abgeschnitten werden.
Dein
Umsatz ist ein Umsatz von Geld? Dann wäre eigentlich der Datentyp
Währung die richtige Wahl. - Allerdings speichert
Währung nur 4 Nachkommastellen. Stattdessen könntest du den Datentype
Zahl - Decimal verwenden und 7 Nachkommastellen vorgeben.
Double ist definitiv ungeeignet, weil Fließkommazahlen per Definition nicht exakt sind.
Hallo,
Nur noch als Hinweis:
Zitat von: undefined.... die Anzahl der Nachkommstellen per VBA umstellen von 2 auf 7.
Das macht aber nur in einem normalen Formular Sinn, in einem Endlosform gilt die Umstellung dann auch wieder für die ganze Spalte und nicht je Datensatz.
Und auch bei Dezimal gibt es das gleiche Problem wie in #1 geschildert.
@Philipp Wieso reicht Double nicht ?
Wenn ich recht weis, ist doch Double auf 15 Stellen genau.
Zitat von: MzKlMu am August 08, 2022, 17:04:36Wenn ich recht weis, ist doch Double auf 15 Stellen genau.
Fließkommazahlen sind per Definition
nicht genau, unabhängig von der Anzahl der Stellen.
Aus der VBA-Doku zu Double (https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/data-types/double-data-type): "Double-precision numbers store
an approximation of a real number."
Nachfolgend ein kleines Beispiel mit nur
3(!) Stellen, das bereits Ungenauigkeiten aufweist.
Public Sub Double_Inaccurarcy()
Const a As Double = 43.1
Const b As Double = 43.2
Const c As Double = 1
Dim ergebnis As Double
ergebnis = (a - b) + c
Debug.Print ergebnis
End SubZum Vergleich dasselbe mit Currency, ohne die Ungenauigkeit:
Public Sub Currency_NoInaccurarcy()
Const a As Currency = 43.1
Const b As Currency = 43.2
Const c As Currency = 1
Dim ergebnis As Currency
ergebnis = (a - b) + c
Debug.Print ergebnis
End Sub
Hallo Philipp,
vielen Dank, aber eigentlich hätte ich es wissen müssen. Kann meine Frage gar nicht mehr verstehen. ;D :-[