AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

kaufmännisch runden

Offene Frage von "himitsu"
Ein Thema von rapante · begonnen am 26. Nov 2013 · letzter Beitrag vom 4. Dez 2013
Antwort Antwort
Seite 4 von 4   « Erste     234
Perlsau
(Gast)

n/a Beiträge
 
#31

AW: kaufmännisch runden

  Alt 4. Dez 2013, 06:23
Ganz tolles Thema, ganz tolle Beiträge, jedoch für mich als Anfänger total daneben...
Irgendwie finde ich es daneben, Antworten, die man mangels Grundkenntnissen nicht versteht, als total daneben zu bezeichnen ...

Frage: Was benutzt man am Besten an Formaten in der Datenbank für Preise und Mengen, um im Nachhinnein möglichst wenig Probleme zu haben?
Man verwendet für Geldbeträge gewöhnlich nicht denselben Typ wie für Mengen. Bei Geldbeträgen bietet sich der Currency-Typ (wie schon der Name nahelegt) an. Furtbichler hatte das in diesem Beitrag bereits ausführlich erläutert. Bei Mengen kommt es auf die jeweilige Einheit an: Für Stück genügt ein Integer, bei Gewichten, Längenmaßen und dergleichen nimmt man jenen Fließkomma-Typ, der die erforderliche Genauigkeit bereitstellt.

Deine Fragestellung ist mir etwas zu allgemein gehalten, denn als Anfänger mit nur lückenhaften Grundkenntnissen hat man eigentlich immer mit Problemen zu kämpfen. Da kommt man nicht drumrum, da muß man hindurch.

Ich habe obiges jetzt nicht so wirklich verstanden, und diese Art und Weise, dass ich irgend ein X dazuaddieren sollte, finde ich befremdlich.
Dann wäre es doch sicher nicht verkehrt, denjenigen, der dir das empfohlen hat, noch einmal um eine etwas einfacher formulierte Darstellung zu bitten. Ebenso hilfreich könnte es u.U. sein, dich selbst einmal mit den verschiedenen Float-Typen etwas ausgiebiger zu befassen.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#32

AW: kaufmännisch runden

  Alt 4. Dez 2013, 07:59
G...und diese Art und Weise, dass ich irgend ein X dazuaddieren sollte, finde ich befremdlich.
Vollkommen richtig. Das findet so ziemlich jeder.

Aaaber: In Delphi geht das kaum anders (bei Geld gibts -zum 1000x- den 'Currency' Datentyp, der mit einigen Datenbanken kompatibel is, sowit ich weiß)

Schau dir mal (aka bilde dich weiter ) Artikel über Floating Point, Fließkommazahlen usw. an. Das ist das gängige Format, indem Zahlen mit Dezimalanteil verarbeitet werden. Wieso gängig? Weil die Operationen darauf, also +,-,*,/, Sin etc. hochoptimiert durchgeführt werden können.

Pferdefuß: Damit können so "einfache" Zahlen wie "0,1" genaugenommen nicht dargestellt werden, dafür aber (z.B.) so wichtige Zahlen wie "0,09999999999643" und "0,100000000000367". Warum das so ist, wirst Du sehen, wenn Du die entsprechenden Artikel liest.

Beide Zahlen, also die 0,09999... und die 0,10000.. werden aber beim Debuggen in Delphi als 0,1 angezeigt (gemein, was?). Ein Vergleich mit "0,1" ergibt dann aber FALSE. Und ein Vergleich auf ">0,1" unter umständen auch. Und obwohl Delphi im Debugger die Zahl vielleicht als 0,1 anzeigt, wird sie in der Datenbank als 0,99999999999999643 abgelegt (oder eben als 0,1000000000000367).

Aber so etwas will man ja nicht unbedingt auf einer Rechnung sehen, oder als Preisschild im Supermarkt (die wären ganz schön lang, die Teile): Also muss man runden. Das muss man sowieso, wenn man prozentuale Anteile (Rabatt, VAT usw) ausrechnet. So, und beim Runden muss man dann erstens 0,005 dazuaddieren, damit man kaufmännisch rundet und dann blöderweise nochmals 0,0000000000001 um diesem Format ein Schnippchen zu schlagen.

Jeder Delphi-Programmierer geht da durch und stellt die gleichen Fragen. Und jeder gute Delphi-Programmierer weiß darauf irgendwann die Antwort. Ich gehe davon aus, das Du einer derjenigen sein wirst, die dem nächsten Rookie das ganz genau erklären kann.

Und für Leute, die erst Fahrrad fahren lernen ist es echt nervig, von den Fahrradfahrern, die an einem vorbeifahren, erklärt zu bekommen, wie leicht das doch ist.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#33

AW: kaufmännisch runden

  Alt 4. Dez 2013, 13:27
Ich habe obiges jetzt nicht so wirklich verstanden, und diese Art und Weise, dass ich irgend ein X dazuaddieren sollte, finde ich befremdlich.
1,346+0,005=1,351 letzte Stelle streichen => 1,35
1,344+0,005=1,349 letzte Stelle streichen => 1,34

Was ist daran befremdlich? Du willst einen gerundeten Wert bekommen, der sieht Deinem ursprünglichen Wert nur ähnlich hat aber ansonsten garnichts mit diesem zu tun!
Das ist nur für die Darstellung.

Zitat:
Frage: Was benutzt man am Besten an Formaten in der Datenbank für Preise und Mengen, um im Nachhinnein möglichst wenig Probleme zu haben?
Das kommt darauf an! geht es um 12 Eier für dreifuffzigbenötigst du andere Typen als wenn du die Umsätze eines Großkonzerns zu verwalten hast.

Mein Tip dazu: wenn 16Bit reichen sollten, dann nimm 32Bit weil es kommt immer mehr als man glaubt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#34

AW: kaufmännisch runden

  Alt 4. Dez 2013, 16:55
TheDailyWTF hat heute was zu dem Thema
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: kaufmännisch runden

  Alt 4. Dez 2013, 18:01
TheDailyWTF hat heute was zu dem Thema
Ist der Beitrag von einem Anti-Delphi-Jünger geschrieben wurden?

An allem ist Delphi schuld.

Man kann natürlich alles umständlich selber machen,
oder Delphi-Referenz durchsuchenSet8087CW or Delphi-Referenz durchsuchenSetRoundMode
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#36

AW: kaufmännisch runden

  Alt 4. Dez 2013, 18:31
Jetzt mal ernsthaft
gerundet werden soll auf 2 Stellen hinterm Komma, gegeben ist
0,44444444444444444444444445
was kommt raus? 0,45 oder 0,44?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: kaufmännisch runden

  Alt 4. Dez 2013, 18:36
0,44 ... egal ob mathematisch oder kaufmännisch gerundet
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:49 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