it-swarm.com.de

Wenn ich in Excel 22222.09482 eingebe, wird in der Bearbeitungsleiste die Nummer 22222.0948199999 angezeigt

Könnten Sie mir bitte helfen? Da ich eine seltsame Situation habe, sehe ich, wenn ich eine Nummer 22222.09482 in die Zelle eingebe, eine andere Nummer 22222.0948199999 in der Bearbeitungsleiste. Unten ist der Schnappschuss des Problems.

Sample error

Ich sehe das gleiche Verhalten, wenn ich die folgenden Zahlen eingebe:

22222.09482
33333.09482
44444.09482
55555.09482

aber wenn ich 11111.09482 und 66666.09482, 77777.09482 eingebe .. bis 99999.09482 dann zeigt sie richtig. Ich bin mir nicht sicher, ob es sich um eine Rundung handelt. Ich habe nicht Setup keine Rundungsprofile. Könnten Sie mir bitte bei der Lösung des Problems helfen?.

28
user954171

Es ist ein Fehler.

Excel verwendet nach anderen Angaben die übliche IEEE-Darstellung mit doppelter Genauigkeit. Die Genauigkeit beträgt 53 signifikante Binärstellen, was ungefähr 16 Dezimalstellen entspricht.

Es ist immer "sicher", die ersten 15 signifikanten Dezimalstellen anzuzeigen. In dem Sinne, dass jede dezimal "dargestellte" Zahl mit 15 Stellen sicher von den Zahlen unterschieden werden kann, die durch Ändern der 15. Dezimalstelle durch Eins erhalten werden. Zum Beispiel die 15-stelligen Zahlen:

22222.09481 99999
22222.09482 00000
22222.09482 00001

abbildung auf drei verschiedene doppelt genaue Zahlen. In der Darstellung mit doppelter Genauigkeit wird in diesem speziellen Fall keiner dieser drei "Nachbarn" sein.

Die ersten beiden in der Benutzeranzeige zu verwechseln, ist also ein Fehler in Excel.

In dieser Domäne (zwischen 16384 und 32768) beträgt die absolute Genauigkeit 2-38, und die folgenden Zahlen sind darstellbar:

...
22222.09481 99998 96571 9714760780334472656250000
22222.09481 99999 00209 9502831697463989257812500 <-- the one closest to what Excel showed to the user
22222.09481 99999 03847 9290902614593505859375000
22222.09481 99999 07485 9078973531723022460937500
22222.09481 99999 11123 8867044448852539062500000
22222.09481 99999 14761 8655115365982055664062500
22222.09481 99999 18399 8443186283111572265625000
22222.09481 99999 22037 8231257200241088867187500
22222.09481 99999 25675 8019328117370605468750000
22222.09481 99999 29313 7807399034500122070312500
22222.09481 99999 32951 7595469951629638671875000
22222.09481 99999 36589 7383540868759155273437500
22222.09481 99999 40227 7171611785888671875000000
22222.09481 99999 43865 6959682703018188476562500
22222.09481 99999 47503 6747753620147705078125000
22222.09481 99999 51141 6535824537277221679687500
22222.09481 99999 54779 6323895454406738281250000
22222.09481 99999 58417 6111966371536254882812500
22222.09481 99999 62055 5900037288665771484375000
22222.09481 99999 65693 5688108205795288085937500
22222.09481 99999 69331 5476179122924804687500000
22222.09481 99999 72969 5264250040054321289062500
22222.09481 99999 76607 5052320957183837890625000
22222.09481 99999 80245 4840391874313354492187500
22222.09481 99999 83883 4628462791442871093750000
22222.09481 99999 87521 4416533708572387695312500
22222.09481 99999 91159 4204604625701904296875000
22222.09481 99999 94797 3992675542831420898437500
22222.09481 99999 98435 3780746459960937500000000 <-- the one closest to what the user types
22222.09482 00000 02073 3568817377090454101562500
22222.09482 00000 05711 3356888294219970703125000
22222.09482 00000 09349 3144959211349487304687500
22222.09482 00000 12987 2933030128479003906250000
22222.09482 00000 16625 2721101045608520507812500
22222.09482 00000 20263 2509171962738037109375000
22222.09482 00000 23901 2297242879867553710937500
22222.09482 00000 27539 2085313796997070312500000
22222.09482 00000 31177 1873384714126586914062500
22222.09482 00000 34815 1661455631256103515625000
22222.09482 00000 38453 1449526548385620117187500
22222.09482 00000 42091 1237597465515136718750000
22222.09482 00000 45729 1025668382644653320312500
22222.09482 00000 49367 0813739299774169921875000
22222.09482 00000 53005 0601810216903686523437500
22222.09482 00000 56643 0389881134033203125000000
22222.09482 00000 60281 0177952051162719726562500
22222.09482 00000 63918 9966022968292236328125000
22222.09482 00000 67556 9754093885421752929687500
22222.09482 00000 71194 9542164802551269531250000
22222.09482 00000 74832 9330235719680786132812500
22222.09482 00000 78470 9118306636810302734375000
22222.09482 00000 82108 8906377553939819335937500
22222.09482 00000 85746 8694448471069335937500000
22222.09482 00000 89384 8482519388198852539062500
22222.09482 00000 93022 8270590305328369140625000
22222.09482 00000 96660 8058661222457885742187500
22222.09482 00001 00298 7846732139587402343750000
...

Versuchen Sie zur weiteren Erläuterung, 22222.09482 in eine Zelle und 22222.0948199999 (fünf nachstehende Neunen) in eine andere Zelle einzugeben. Excel sollte die beiden IEEE-Vertreter auswählen, die durch den obigen Pfeil gekennzeichnet sind. Und ich denke, das ist der Fall, weil Sie die Differenz dieser beiden Zellen berechnen können, um 9.82254E-11 zu erhalten. Aber beide werden auf die gleiche Weise gezeigt.

Wenn Excel die ersten 17 Ziffern angezeigt hätte, wäre es hilfreich, genau herauszufinden, welche IEEE-Nummer "unter" der Dezimalzahl liegt. In diesem Fall:

22222.0948199999 --> 22222.09481 99999 00
22222.09482      --> 22222.09481 99999 98

Aber falsch gerundete 15 -Ziffern sind irreführend und wenig hilfreich.


Bevor jemand behauptet, es sei beabsichtigt, warum zeigt 8.7 dann nicht dasselbe Verhalten? Die 8.7 nächstgelegene Zahl mit doppelter Genauigkeit ist:

8.69999999999999 93

es sollte also als 8.69999999999999 angezeigt werden, wenn dies beabsichtigt war. Aber das tut es nicht.

31

Excel speichert Zahlen im IEEE 754 binären 64-Bit-Gleitkommaformat. Der Schlüssel ist "speichert" - der Wechsel von Dezimal zu Binär erfolgt immer dann, wenn eine Zahl gespeichert wird, nicht nur, wenn sie in einer tatsächlichen Berechnung verwendet wird.

Ein netter Artikel dazu ist unter Floating Point Precision verstehen, auch bekannt als "Warum gibt Excel mir scheinbar falsche Antworten?"

Es ist möglich, ein Tabellenkalkulationsprogramm zu erstellen, das sehr große Zahlen mit vielen signifikanten Ziffern verarbeiten kann. Aber es ist nicht besonders praktisch. Excel könnte für das Format IEEE 754 decimal128 entwickelt worden sein, das 34 Dezimalstellen zulässt - mehr als genug, um 22222.09482 zu speichern. Stattdessen wird das weitaus häufigere binary64 Double Precision - Format verwendet, das eine Genauigkeit von 53 Bit aufweist, was knapp 16 Stellen entspricht. Während Sie vielleicht denken, dass dies für eine Zahl mit nur 10 Stellen ausreichen würde, erschwert die Konvertierung von dezimal zu binär die Dinge ein bisschen - d. H. 2222209482 kann zu 100% korrekt als binäre 64-Zahl gespeichert werden, 22222.09482 jedoch nicht.

Beachten Sie, dass in der Regel Tabellenkalkulationen für Finanzdaten verwendet werden, für die in der Regel nicht so viele Ziffern erforderlich sind, oder für die "Was-wäre-wenn" -Modellierung in einer Vielzahl von Szenarien, in denen ein Höchstmaß an Genauigkeit erforderlich ist wird nicht gebraucht. Es gibt sicherlich andere Tools (und wahrscheinlich auch andere Tabellenkalkulationsprogramme, die ich in letzter Zeit nicht gesucht habe), die entweder standardmäßig oder durch spezielle Konfigurationseinstellungen ein größeres numerisches Format verwenden können, Excel ist jedoch keines davon.

Für diejenigen, die darauf hinweisen, dass LibreOffice dies besser handhabt, kann das Aussehen täuschen. Siehe diesen Beitrag für weitere Details. Es scheint, dass LibreOffice große Zahlen leicht unterschiedlich behandelt, aber dieselbe grundlegende 64-Bit-Gleitkommadarstellung mit ähnlichen Problemen aufweist.

23
manassehkatz

Bei der Berechnung muss Excel eine gute interne Binärdarstellung für die verwendeten Zahlen finden. In Ihrem Fall wird eine Gleitkommazahl verwendet, und tatsächlich hat dieses Datenformat eine (sehr gute) Näherung für Ihre Zahl, aber keine exakte Übereinstimmung. Wenn Sie Excel also nicht explizit mitteilen, welches Ausgabeformat verwendet werden soll, wird "bestmögliche Leistung" erbracht, was zu einer Ausgabe führt, die näher am intern berechneten Wert liegt, aber nicht genau dem eingegebenen Text entspricht.

Um dies zu verdeutlichen: Wenn Sie verstehen, dass der von Ihnen eingegebene Text eine Zahl darstellt und die Ziffernfolge in eine Zahl umwandelt, entspricht dies bereits der Definition von "Berechnung" von oben.

EDIT

Ich habe nicht deutlich genug gemacht, dass ich die Wahl einer 64-Bit-Gleitkommadarstellung eigentlich für gut halte: Excel ist kein Werkzeug für Wissenschaftler, bei dem ein Rundungsfehler in der 11. Stelle nach dem Komma entsteht Eine große Auswirkung, aber Buchhalter möchten nicht, dass ihre Verarbeitungsgeschwindigkeit um einen Faktor von Millionen verringert wird, um eine Quelle ungenauer Berechnungen zu berücksichtigen, die sich in Zahlen manifestieren können, die sie niemals verwenden.

Wenn Sie ein Tabellenkalkulationsprogramm für das verwenden, wofür es entwickelt wurde, und eine explizite Ausgabeformatierung verwenden, um sicherzustellen, dass diese Effekte niemals in den sichtbaren Bereich gelangen, ist alles in Ordnung.

11
Eugen Rieck

Wenn ich 11111.09482 und 66666.09482, 77777.09482 .. bis 99999.09482 eingebe, dann zeigt sie richtig. Ich bin mir nicht sicher, ob es sich um eine Rundung handelt. Ich habe keine Rundungsprofile eingerichtet. Könnten Sie mir bitte bei der Lösung des Problems helfen?.

Einige Zahlen können korrekt dargestellt werden, andere nicht.

Stellen Sie die angezeigte Genauigkeit entsprechend Ihren Berechnungen ein und verwenden Sie die Funktion round ().

  • Erklärung:

  • Lösung:

    Sie können häufig verhindern, dass Gleitkomma-Rundungsfehler Ihre Arbeit beeinträchtigen, indem Sie die Option Präzision als angezeigt festlegen, bevor Sie ein Zahlenformat auf Ihre Daten anwenden. Diese Option erzwingt, dass der Wert jeder Zahl im Arbeitsblatt die auf dem Arbeitsblatt angezeigte Genauigkeit aufweist.

    1. Klicken Sie auf Datei> Optionen.
      In Excel 2007: Klicken Sie auf die Microsoft Office-Schaltfläche Office-Schaltfläche und anschließend auf Excel-Optionen.
       Button Image

    2. Klicken Sie auf Erweitert, und aktivieren Sie dann unter Beim Berechnen dieser Arbeitsmappe das Kontrollkästchen Genauigkeit wie angezeigt festlegen, und klicken Sie dann auf OK.

    3. OK klicken.

    4. Wählen Sie im Arbeitsblatt die Zellen aus, die Sie formatieren möchten.

    5. Klicken Sie auf der Registerkarte Start auf das Dialogfeld-Startschaltflächenbild neben Zahl.
       Launcher Button Image
       Excel Ribbon Image

    6. Klicken Sie im Kategorie auf Nummer.

    7. Geben Sie im Feld Dezimalstellen die Anzahl der anzuzeigenden Dezimalstellen ein.

    Tipp: Um die Auswirkungen von Ungenauigkeiten bei der arithmetischen Gleitkommaspeicherung zu minimieren, können Sie die RUND-Funktion auch verwenden, um Zahlen auf die Anzahl der Dezimalstellen zu runden, die für Ihre Berechnung erforderlich sind.

  • Journal of Accountancy - " Fehler bei der Excel-Berechnung ":

    Bestimmte ungerade Zahlen erzeugen sich wiederholende binäre Dezimalstellen, und wenn diese sich wiederholenden Ziffern nach 15 Stellen abgeschnitten werden, wird die binäre Zahl nicht genau in den beabsichtigten numerischen Wert zurückgewandelt. Beispielsweise sollte in allen Excel-Editionen die Formel 22.26 - 21.29 0,97 ergeben, aber stattdessen 0,970000000000002. Probieren Sie es aus und denken Sie daran, die Spaltenbreite und die Dezimalstellen zu erhöhen, damit Sie das Berechnungsproblem erkennen können.

    Solche Fehler werden in der Regel als unwesentlich oder unwesentlich angesehen, da sie sich selten in aussagekräftigen Rechenfehlern äußern. Dennoch können Sie zwei Maßnahmen ergreifen, um potenzielle Gleitkommafehler zu beseitigen:

    1. Die ROUND-Funktion. Verwenden Sie die RUNDEN-Funktion von Excel, um Ihre berechneten Werte auf die gewünschte Dezimalstelle zu runden und so die Möglichkeit von Abweichungen der 15. Stelle auszuschließen. Zum Beispiel ergibt die Formel = RUND (-21,29 + 22,26,2) genau 0,97.

    2. Präzision. Sie können die Option "Präzision als angezeigt" in Excel aktivieren, um zu erzwingen, dass alle Formeln berechnete Werte basierend auf den sichtbaren Ziffern abschneiden und runden.

    Um diese Option in Excel 2013, 2010 und 2007 zu aktivieren, wählen Sie Datei (oder die Office-Kugel), Optionen (oder Excel-Optionen), Erweitert, und aktivieren Sie im Abschnitt Beim Berechnen dieser Arbeitsmappe das Kontrollkästchen Genauigkeit wie angezeigt festlegen und Klicken Sie dann auf OK.

    Wählen Sie in Excel 2003, 2002 und 2000 im Menü Extras die Option Optionen aus, und aktivieren Sie auf der Registerkarte Berechnung unter Arbeitsmappenoptionen das Kontrollkästchen Genauigkeit wie angezeigt, und klicken Sie dann auf OK.

2
Rob

Wie Sie sicher wissen, arbeiten Computer intern nur mit Nullen und Einsen (a.k.a. Bits) und haben eine feste Anzahl von Bits, um einen Wert darzustellen (heutzutage normalerweise 64 Bits). Dies bedeutet, dass die Anzahl der verschiedenen darstellbaren Werte zwischen 2 und 64 liegt. Das ist zwar eine riesige Zahl, aber die Anzahl der möglichen -Werte ist endlich, sodass nicht alle Zahlen dargestellt werden können. Wenn es auf eine Zahl stößt, die es nicht genau darstellen kann, wird sie automatisch durch die nächste ersetzt, die es kann darstellt. Das ist was du siehst.

0
Javier Alvarado