Autor Thema: Rundungsfehler  (Gelesen 3593 mal)

Offline Thorsten Kalweit

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Rundungsfehler
« am: 26.02.07 - 10:07:53 »
Hallo zusammen,

in unserer Rechnungsdatenbnak habe ich einen Rundungsfehler festgestellt:

Formel für den Bruttobetrag:
nbetrag+(nbetrag * ust_s / 100)

Nettobetrag:
313,50

19% von 313,50 = 59,57, obige Formel ergibt aber 373,06 statt 373,07 (Felder sind numerisch mit 2 Nachkommastellen)

Wisst Ihr, welches Problem da besteht?
Viele Grüße
Thorsten

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Rundungsfehler
« Antwort #1 am: 26.02.07 - 10:21:22 »
Hängt nicht mit Lotus Notes zusammen. Das gibts in jeder Programmiersprache, die mit Gleitkommazahlen (floating point numbers) zu tun hat.
Du kannst solltest dir das mal durchlesen:
http://docs.sun.com/source/806-3568/ncg_goldberg.html

Für mich beliebte: Alternativen zu floating point:
Der SQL Datentyp NUMERIC. Hier ist die Anzahl der Stellen hinter dem Komma fest definiert.
Die Java Klasse BigDecimal. Hier kann die Anzahl der Stellen hinter dem Komma sehr groß werden. Kann natürlich viel Speicher in Beschlag nehmen.
« Letzte Änderung: 26.02.07 - 10:37:16 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Rundungsfehler
« Antwort #2 am: 26.02.07 - 10:26:13 »

Du kannst solltest dir das mal durchlesen:
http://docs.sun.com/source/806-3568/ncg_goldberg.html

OOpsy. Das kapier ich selber nicht so ganz. Das ist einfacher verständlich: http://de.wikipedia.org/wiki/Gleitkommazahl
« Letzte Änderung: 26.02.07 - 10:37:56 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Thorsten Kalweit

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Re: Rundungsfehler
« Antwort #3 am: 26.02.07 - 10:46:07 »
öhhh... ich arbeite in der DB nicht mit Java.  ;)

Meines Erachtens hat es dann doch mit Notes zu tun, bzw. mit dem Handlig der Zahlenwerte.  :-:

Gibt es dazu einen einfachen Workaround?
Viele Grüße
Thorsten

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Rundungsfehler
« Antwort #4 am: 26.02.07 - 11:00:30 »
Jo, den Faktor 100 oder größer, je nach belieben

Nettobetrag * 100 dann das Ergebnis wieder durch 100. Das sollte funktionieren.
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Rundungsfehler
« Antwort #5 am: 26.02.07 - 12:42:19 »
Mit dem folgenden Workaround verhinderst du die Rundungsfehler:

Formel für den Bruttobetrag:
nbetrag+((nbetrag * ust_s / 100) + 0,005)



Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Rundungsfehler
« Antwort #6 am: 26.02.07 - 12:57:35 »
Joooo der Trick mit der 5!  :D
Alles nach der zweiten Stelle wird ja Abgeschnitten...
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Rundungsfehler
« Antwort #7 am: 26.02.07 - 14:27:47 »
Das ist ein allgemeines Problem beim Rechnen mit Gleitkommazahlen. Das ist programmiersprachen-unabhängig.
Auch mit 100 multiplizieren, etc. löst das Problem nicht, sobald du anfängst zu dividieren.
Du kannst halt Dinge wie 1/3 binär schwer erfassen.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Rundungsfehler
« Antwort #8 am: 26.02.07 - 16:53:37 »
Ja, diese Rechendramen kenne ich zu genüge.
Was auch lustig ist, ist einen Betrag ausrechnen und diesen dann auf volle 10€ aufrunden...
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Rundungsfehler
« Antwort #9 am: 26.02.07 - 17:21:24 »
Was auch lustig ist, ist einen Betrag ausrechnen und diesen dann auf volle 10€ aufrunden...
Wieso?

Bernhard
« Letzte Änderung: 26.02.07 - 17:53:56 von koehlerbv »

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Rundungsfehler
« Antwort #10 am: 26.02.07 - 17:51:54 »
Oft helfen aber gerade die sogenannten "Grundlagen" zu verstehen.
Hab nie Informatik studiert, aber es ist dann nach einigen Jahren "praktischer Arbeit" schon erstaunlich, wie viel sich z.B. von sowas in der realen Welt wiederfindet. Zum Bleistift hier: http://en.wikipedia.org/wiki/Data_structure
Gleitkommazahlen ist auch so ein Fall.
Man muß ja nicht jeden Tag Algorythmus Bücher wälzen, aber von Zeit zu Zeit mal zumindest an der Oberfläche der theoretischen Grundlagen zu kratzen find ich gar nicht so dumm. Das Relationale Datenbankmodell ist so ein anderes Thema mit interessanten theoretischen Verästelungen.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz