• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Das neue Jahr beginnt wie das alte - natürlich mit einem neuen Fotowettbewerb! Auch im Monat Januar freuen wir uns auf Eure Einsendungen. Wie es weitergeht, wisst Ihr ja - Hier geht es lang --> Klick

Numbers rundet falsch auf

c0d3z3r0

Golden Delicious
Registriert
18.05.13
Beiträge
7
Hallo,

ich habe folgendes Problem, vielleicht kann mir ja jemand helfen? :)

Code:
=AUFRUNDEN((10,74+6,50)/2;2)
Verwende ich in Numbers diese Formel, erhalte ich als Ergebnis 8,63.
8,63 wäre ja richtig gerundet wenn der Wert 8,621 o.ä. wäre.

Code:
=AUFRUNDEN(8,620;2)
Setze ich den Wert (10,74+6,5)/2 = 8,620 direkt ein, erhalte ich das richtige Ergebnis 8,62.


Warum rundet Numbers hier fälschlicherweise eine 0 auf? Hat jemand ähnliche Probleme und vielleicht sogar eine Lösung?

Danke! :)
 

MACaerer

Charlamowsky
Registriert
23.05.11
Beiträge
13.026
Nun die Funktion =AUFRUNDEN rundet grundsätzlich nach oben auf, auch wenn nur ganz weit "hinten" eine Nachkommastelle steht. Die kommt daher, dass der Mac intern nicht mit Dezimalzahlen sondern mit binären Gleitkommazahlen rechnet und es dabei zu Rundungsfehlern kommen kann. Ein richtiges Ergebnis bekommst du wenn du nicht die Funktion =AUFRUNDEN sondern =RUNDEN verwendest.

MACaerer
 

rana70

Rheinischer Krummstiel
Registriert
31.07.11
Beiträge
381
Hi,

hat es möglicherweise damit zu tun, dass hier die Funktion AUFRUNDEN benutzt wird ?

Probier doch mal, ob Du mit der Funktion RUNDEN zum gewünschten erfolg kommst.

In Deinem Fall wird in der Funktion AUFRUNDEN 17,241 wunschgemäß aufgefunden, also auf 17,25.

Vergleich:
Runden.png
 

Marcel Bresink

Borowitzky
Registriert
28.05.04
Beiträge
9.018
Ja, aber die eigentliche Ursache hat MACaerer schon genannt: Computerprogramme berechnen Werte (anders als viele Taschenrechner) nicht mit Dezimalzahlen, sondern in Gleitkommaarithmetik, wobei sie sich an die Norm IEEE 754 halten müssen.

Die eigentliche Ursache des Fehlers ist die Zahl 10,74, die ein Computer, der sich an diese Arithmetik hält, nicht speichern kann. In Wirklichkeit ist das System gezwungen, statt 10,74 die Zahl 1,0740000000000000213162820728 * 10 als bestmöglichen Näherungswert für 10,74 zu speichern. Wenn man dann 6,5 dazuaddiert und durch zwei teilt, kommt eben nicht 8,62 heraus, sondern etwas mehr. Das auf zwei Stellen aufgerundet ergibt 8,63. Die Berechnung ist also gemäß Norm korrekt.

Man sollte sich dieser Ungenauigkeit immer bewusst sein, wenn man mit "normalen" Computerprogrammen rechnet. Wer es genauer haben will, muss spezielle Mathematikprogramme wie MATLAB oder Mathematica einsetzen.
 

c0d3z3r0

Golden Delicious
Registriert
18.05.13
Beiträge
7
Bei meiner Berechnung MUSS =AUFRUNDEN verwendet werden. =RUNDEN bringt mir an der stelle nichts, da hier auf keinen Fall abgerundet werden darf.

Was ich jetzt nicht ganz verstehe... selbst wenn Numbers mit 1,0740000000000000213162820728 * 10 rechnet, dürfte das keinerlei Auswirkung auf =AUFRUNDEN(eineZahl;2) haben, da hier ja lediglich die 3. Stelle nach dem Komma betrachtet wird und auf die zweite Stelle aufgerundet wird. 17,241 wären dann, wie oben schon gesagt, 17,25. Und das ist genau so gewünscht. Aber z.B. 8,62000004 darf nicht plötzlich 8,63 werden, denn die dritte Stelle ist eine 0. Oder sehe ich das falsch?

Ich hab' übrigens auch mal folgendes ausprobiert:
=AUFRUNDEN(10,740;2), was zum gewünschten Ergebnis 10,74 führt.
=AUFRUNDEN(10,741;2) wird 10,75
=AUFRUNDEN((6,5+10,74)/2;2) wird 8,63
=AUFRUNDEN(KÜRZEN((6,5+10,74)/2;3);2) wird 8,63, obwohl ja dann alle nachfolgenden Stellen 0 sein müssten...
=AUFRUNDEN(KÜRZEN((6,5+10,74)/2;2);2) wird 8,62, auch hier sind alle nachfolgenden Stellen 0. Wo ist denn der Unterschied zum vorherigen??

Und OpenOffice macht aus
=AUFRUNDEN((6,5+10,74)/2;2) das richtige Ergebnis 8,62 o_O
 

MACaerer

Charlamowsky
Registriert
23.05.11
Beiträge
13.026
Rechne doch mal mit =AUFRUNDEN((10,74+6,5)/2*100;2). Das Ergebnis lautet dann kurioserweise nicht 862,00 wie man meinen sollte sondern 862,01. Falls man die Zahl Nachkommastellen in der Funktion vergrößert rückt die "1" auch entsprechend weiter nach hinten. Es gibt also immer eine Nachkommastelle, die das aufrunden auf die nächstgrößere Zahl erzwingt. Entsprechend liefert z. B.
=AUFRUNDEN((10,74+6,5)/2;3) das Ergebnis 8,621, =AUFRUNDEN((10,74+6,5)/2;4) das Ergebnis 8,6201 usw.

MACaerer
 

c0d3z3r0

Golden Delicious
Registriert
18.05.13
Beiträge
7
Hm, okay... und was macht OpenOffice dann anders, dass es richtig ist? :(
 

MACaerer

Charlamowsky
Registriert
23.05.11
Beiträge
13.026
Das ist die Frage. Übrigens liefert die Funktion auch in Microsofts Excel das richtige Ergebnis, wie ich gerade ausprobiert habe. Offensichtlich ist es also möglich die durch die Gleitkomma-Arithmetik entstehenden Rundungsfehler zu korrigieren. Warum das die Funktion in Numbers nicht hinkriegt weiß ich auch nicht, vielleicht doch ein Bug. Da kann man nur sagen: bitte nachbessern, Apple.

MACaerer
 

c0d3z3r0

Golden Delicious
Registriert
18.05.13
Beiträge
7
Okay, es hat mich sowieso gewundert, weil beim Runden eigentlich nur die Stelle vorher betrachtet wird... was in meinem Fall ja eine 0 wäre...

Naja, demnächst gibt's ja das neue iWork :)