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

28

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.

Beispielfehler

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 dies mit der Rundung zusammenhängt. Ich habe keine Rundungsprofile eingerichtet. Könnten Sie mir bitte bei der Lösung des Problems helfen?

user954171
quelle
1
Ordentlicher Fund, tut dasselbe für mich - kannst du es einfach benutzen ROUND()? =ROUND(A1,5)Kopieren Sie dann die Daten als Werte, und entfernen Sie die ursprünglichen Zahlen.
BruceWayne
1
@ BruceWayne, interessanterweise ROUND()zeigt das die richtigen Ziffern, aber das Kopieren / Einfügen als Wert bringt es zurück zum Original!
Rey Juna
1
@ReyJuna - Dann mach einfach ROUND(A1,5)nochmal auf die eingefügten Werte. Kopieren Sie diese als Werte und fügen Sie sie Round()erneut ein. Kopieren Sie sie anschließend. ...: P ... das ist interessant und es sieht so aus, als hätte @EugenRieck die Argumentation. Gute Frage!
BruceWayne
1
Interessiert Sie der Unterschied zwischen 22222.09482 und 22222.0948199999? Es ist eine Differenz von 5 Teilen in 100 Billionen.
Russell Borogove
4
Ist Gleitkomma-Mathematik kaputt? . Dies ist jedoch wahrscheinlich ein Fehler, da doubledie Genauigkeit so
hoch

Antworten:

31

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. Dezimalzahl durch Eins erhalten werden. Zum Beispiel die 15-stelligen Zahlen:

22222.09481 99999
22222.09482 00000
22222.09482 00001

Abbildung auf drei verschiedene Zahlen mit doppelter Genauigkeit. 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 bis 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.09482in eine Zelle und 22222.0948199999in eine andere Zelle (fünf nachgestellte Neunen) einzugeben. Excel sollte die beiden IEEE-Vertreter auswählen, die durch den obigen Pfeil gekennzeichnet sind. Und ich denke schon, weil man die Differenz dieser beiden Zellen berechnen kann, um zu bekommen 9.82254E-11. Aber beide werden auf die gleiche Weise gezeigt.

Wenn Excel die ersten 17 Stellenangezeigthä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

Es ist jedoch irreführend und wenig hilfreich, wenn 15 Stellen falsch gerundet angezeigt werden.


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

8.69999999999999 93

so sollte es sich zeigen, als 8.69999999999999ob dies beabsichtigt war. Aber das tut es nicht.

Jeppe Stig Nielsen
quelle
9
Du hast recht, es ist ein Fehler. Die Algorithmen zum Konvertieren einer binären Gleitkommazahl, die die geringste Anzahl signifikanter Stellen anzeigt, sind schwierig, aber bekannt. Es sieht so aus, als hätte jemand ein wichtiges Detail übersehen.
Mark Ransom
2
@ Ruslan Ich habe viele Threads über Gleitkomma-Arithmetik, Stack Overflow und andere SE-Sites gesehen, und oft geben die Leute eine Antwort mit allen möglichen allgemeinen Wahrheiten und Vorstellungen über (binäre) Gleitkommazahlen, ohne sich auf die tatsächlichen Zahlen zu beziehen und Überprüfen, ob das Verhalten IEEE-konform ist. Ich denke, ich könnte die Frage "Warum kommt 2.1 + 2.2zurück 4.80000001?" und ich bekomme viele Antworten, die besagen, dass ich das erwarten muss, wenn ich Fließkommazahlen verwende.
Jeppe Stig Nielsen
1
@benshepherd: Der LibreOffice-Screenshot zeigt nicht, was der Excel-Screenshot zeigt
Thomas Weller
1
@JeppeStigNielsen: 2,1 + 2,2 = 4,8? Das ist nur 0,5 aus. Es ist normal.
Thomas Weller
@ MarkRansom: Also implementiert Excel das wirklich selbst? Excel ist nicht in C ++ implementiert oder was macht die Gleitkommaberechnung dafür? Ist es das was du sagst? Oder ist der Fehler in C ++ bereits aufgetreten, sodass Millionen von Anwendungen betroffen sind?
Thomas Weller
22

Excel speichert Zahlen im binären 64-Bit-Gleitkommaformat nach IEEE 754 . 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 Grundlegendes zur Gleitkommapräzision, 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 hätte das IEEE 754-Dezimalformat 128 verwenden können , das 34 Dezimalstellen zulässt - mehr als genug, um 22222.09482 zu speichern. Stattdessen wird das weitaus gebräuchlichere 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 wenig - dh 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 keine besonders hohe Genauigkeit erforderlich ist. 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, aber Excel ist keines davon.

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

manassehkatz-Reinstate Monica
quelle
3
Diese Antwort wäre besser, wenn sie auch die Beobachtung erklären würde, dass einige Zahlen mit Dezimalstellen genau so angezeigt werden, wie sie eingegeben wurden - wie z. B. 11111.09482 im Beispiel des OP.
Andrew
11
Nur zum Spaß: 22222.09482Wird wie 1.0101101100111000011000010001100001111110011111000000₂ * 2₁₀^(10000001101₂ - 1023₁₀)in IEEE 754 gespeichert , oder mit anderen Worten so genau 1.35632902954101553 * 2^14, wie es ist 22222.0948199999984353787904.
YoYoYonnY
1
Binary64 (auch bekannt als doppelte Genauigkeit) ist mehr als genug für eine Zahl mit zehn Dezimalstellen. Natürlich kann es nicht genau dargestellt werden, aber die meisten Zahlen, einschließlich 0.2und 0.1nicht genau dargestellt werden (der Bruch 1/5 (ein Fünftel) hat eine unendlich wiederkehrende binäre Erweiterung). Excel zeigt die Dinge jedoch auf verwirrende Weise.
Jeppe Stig Nielsen
2
"Denken Sie daran, dass in der Regel Tabellenkalkulationen für Finanzdaten verwendet werden, für die in der Regel nicht so viele Ziffern erforderlich sind." - Dies ist im Allgemeinen sehr falsch. - Für Finanzdaten ist präzises Verhalten in dem Sinne erforderlich ", Sie haben Recht mit der Dezimal / Binär - Konvertierung usw., aber dieses spezielle Argument ist ungültig! Für Finanzdaten verwenden wir normalerweise eine Art Moneyoder ein BigIntegerFormat, das häufig das Dezimalspeicherformat verwendet.
Honza Zidek
4
Diese Antwort reicht nicht aus, um zu erklären, was passiert. Wir beobachten einen Fehler in Excel, bei dem die Nummer falsch formatiert ist . 22222.09482 und 22222.0948199999 sind unterschiedliche binary64-Zahlen.
Ruslan
11

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.

BEARBEITEN

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.

Eugen Rieck
quelle
1
Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben .
DavidPostill
1
Diese Antwort reicht nicht aus, um zu erklären, was passiert. Wir beobachten einen Fehler in Excel, bei dem die Nummer falsch formatiert ist. 22222.09482 und 22222.0948199999 sind unterschiedliche binary64-Zahlen.
Ruslan
2

Wenn ich 11111.09482 und 66666.09482, 77777.09482 .. bis 99999.09482 eingebe, dann zeigt sie richtig. Ich bin mir nicht sicher, ob dies mit der Rundung zusammenhängt. 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 () .

  • Erläuterung:

  • 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.
      Schaltflächenbild

    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.
      Starter-Schaltflächenbild
      Excel-Multifunktionsleistenbild

    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 auch die Funktion RUNDEN verwenden, um Zahlen auf die Anzahl der Dezimalstellen zu runden, die für Ihre Berechnung erforderlich sind.

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

    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 niederschlagen. Dennoch können Sie zwei Maßnahmen ergreifen, um potenzielle Gleitkomma-Fehler 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.

rauben
quelle
1
Die Erklärung ist irrelevant: Der Unterschied zwischen erwarteten und erhaltenen Zahlen beträgt 28 ULP - viel zu viel für einen natürlichen Rundungsfehler. Die "Lösung" verbirgt nur einen echten Fehler.
Ruslan
Es wäre großartig, wenn Sie das zusammen mit ein paar Links, die Ihre Antwort unterstützen, als Ihre eigene Antwort anstelle eines Kommentars posten könnten. Auf diese Weise würde die Aufmerksamkeit von user954171 auf sich gezogen und die Leute könnten darüber abstimmen. Können Sie einen Link zum Fehlerbericht bereitstellen?
Rob
Es gibt bereits eine Antwort mit allen relevanten mathematischen Details. Keine Ahnung, ob es einen Bug gibt.
Ruslan
0

Wie Sie sicher wissen, arbeiten Computer intern nur mit Nullen und Einsen (alias 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 darstellen kann . Das ist was du siehst.

Javier Alvarado
quelle
Geben Sie an, dass dies auf die Konvertierung der Zahlenbasis oder auf die begrenzte Speicherkapazität pro Wert zurückzuführen ist? In beiden Fällen ist Ihre Argumentation falsch. Technisch gesehen ist es durchaus möglich, eine beliebige Genauigkeit und eine beliebige Länge von Zahlen zu haben - vorausgesetzt, der Speicher ist unendlich. Zum Beispiel gibt es GNU Bignum. Darüber hinaus besteht keine inhärente Notwendigkeit, Zahlen in einem verlustbehafteten Format zu codieren. Weder die Informatik noch die Binärzahlen sind schuld. Es sind nur die Excel-Entwickler, die eine Zahlenkodierung gewählt haben, die für Benutzereingaben verlustreich ist.
Phresnel
-1

Computer rechnen binär und verwenden fast immer Gleitkommazahlen für nicht ganzzahlige Werte. Die einzigen Bruchwerte, die genau im Gleitkomma dargestellt werden können, müssen eine Summe aus einer Kombination von Bruchkräften von 2 (1/2, 1/4, 1/8, 1/16, 1/32, ...) sein, die enden an der festgelegten Genauigkeitsgrenze (normalerweise 53 Bit). Diese Werte haben nicht immer eine ordentliche oder exakte Darstellung in Dezimalzahl, und umgekehrt haben nicht alle Bruchzahlen, die Sie genau in Dezimalzahl darstellen können, eine exakte Darstellung in Binärzahl. Zum Beispiel: 0.1. Es kann nicht als eine Summe von Bruchkräften von 2 dargestellt werden, die nicht für immer andauert.

Wenn Sie einen Dezimalwert in Ihre Tabelle eingeben, wird dieser konvertiert und binär gespeichert. Fälle, wie Sie sie beschrieben haben, werden zur genauesten Näherung, die binär dargestellt werden kann. Bei der Anzeige wird es wieder in eine Dezimalzahl konvertiert, was wiederum eine Annäherung erfordert, die möglicherweise nicht in genau die von Ihnen eingegebene Darstellung zurückkonvertiert wird.

Warum 53 Bits (Geben oder Nehmen)? Weil der typische Standard zum Speichern von Gleitkommazahlen mit "doppelter Genauigkeit" 64 Bit verwendet, in denen eine Mantisse (auch Signifikant genannt), ein Vorzeichenindikator und ein Exponent vorhanden sind. Dem Exponenten werden normalerweise 10 Bits zugewiesen, das Vorzeichen nimmt eins und die Mantisse 53. Dies ist zur Aufbewahrung. Berechnungen werden in der Regel mit 80 Bit durchgeführt und zurückgerundet.

Es gibt Situationen, in denen Computer in der Basis 10 funktionieren, insbesondere wenn mit Geldwerten gearbeitet wird, bei denen Rundungsartefakte nicht akzeptabel sind.

Zenilogix
quelle
2
Ich bin mit einer pauschalen Erklärung zu All computers nicht einverstanden . Es gab viele Computer, von denen zugegebenermaßen die meisten nicht mehr aktiv waren, außer als Museumsstücke, die dezimale numerische Formate für die Speicherung und Berechnung verwendeten. Es gibt auch BCD - Binary Coded Decimal -, das in einer Reihe neuerer CPUs verwendet wird, einschließlich der eingeschränkten Verwendung in Intel-CPUs. Nichts davon ist für die vorliegende Frage relevant - die von Microsoft Excel zum Speichern von Zahlen verwendete Methode, die vollständig binär ist. "Alle Computer" ist jedoch nicht korrekt.
Manassehkatz-Reinstate Monica
Ich sehe die Änderung von "Alle Computer" zu "Computer" - ich würde mit "Fast alle Computer" oder "Modernste Computer" oder so etwas gehen. Ich weiß - ich bin wählerisch. Aber auch Computer :-)
manassehkatz-Reinstate Monica
@manassehkatz Alle digitalen Computer sind grundsätzlich binär. BCD ist nur eine Basis-10-Struktur über Binär, um die Dezimalarithmetik zu vereinfachen.
Zenilogix
Während alle digitalen Computer grundsätzlich binär sind, gab es in der Anfangszeit einige, die auf Dezimalzahlen basierten. Aber ich bin damit einverstanden, dass BCD im Wesentlichen eine Basis-10-Struktur über Binär ist, um die Dezimalarithmetik zu vereinfachen.
Manassehkatz-Reinstate Monica
Diese Antwort hört sich so an, als wäre es die Schuld des Computers. Ist es aber nicht. Sie können jede Zahl genau darstellen, die Sie auf Papier schreiben können (stellen Sie 1/3 genau dar - einfach, wenn Sie sie als Bruch speichern, z. B.). Es geht wirklich darum, welche Darstellung die Excel-Autoren gewählt haben , um Zahlen darzustellen.
Phresnel
-1

Wie viele oben gesagt haben, ist dies ein interner Darstellungsfehler. Excel hat sich für 64-Bit-Gleitkommazahlen mit doppelter Genauigkeit entschieden. Dies gibt Ihnen 2 64 mögliche Werte. Die Domäne für reelle Zahlen enthält unendlich viele Werte. Wenn Sie also versuchen, einen Wert zu verwenden, der von Excel nicht dargestellt werden kann, wird der Wert verwendet, der am ehesten dargestellt werden kann.

Ich habe Kommentare gesehen, die besagten, dass bei unendlichem Speicher jede reelle Zahl dargestellt werden kann. Es stimmt, aber es gibt kein "unendliches Gedächtnis", daher ist dies ein strittiger Punkt. Andere haben angegeben, dass Excel eine größere interne Darstellung hätte verwenden können, beispielsweise 128 Bit. Es stimmt, aber es stellt sich heraus, dass Computer besser in der Lage sind, mathematische Operationen an Zahlen durchzuführen, die mit der Anzahl der Bits dargestellt werden, die der Busgröße des Prozessors entsprechen. So ist ein 32-Bit-Computer bei mathematischen Operationen mit 32-Bit-Zahlen am schnellsten und ein 64-Bit-Computer bei mathematischen Operationen mit 64-Bit-Zahlen am schnellsten. Wenn und wann es einen 128-Bit-Computer geben wird, können wir davon ausgehen, dass Excel zur 128-Bit-Zahlendarstellung übergeht. Das wird immer noch eine sehr große, aber begrenzte Menge von Zahlen liefern, die dargestellt werden können.

Wenn Sie sich Gedanken darüber machen, wie die Zahlen in der Tabelle aussehen, erhalten Sie konsistente Ergebnisse, wenn Sie eine festgelegte Genauigkeit (Anzahl der Dezimalstellen) verwenden. Wenn es Ihnen um den Unterschied zwischen der von Ihnen eingegebenen und der von Excel tatsächlich gespeicherten Nummer geht, sind Sie zu Recht besorgt. Der Unterschied ist real und der Fehler wird durch alle von Ihnen vorgenommenen Berechnungen übertragen. Ich fürchte, Sie stecken mit diesem Fehler fest. Dies ist eine Einschränkung von Excel, kein Fehler, wie einige angegeben haben. Es ist unwahrscheinlich, dass sich dies bald ändert. Wenn dies für Sie nicht akzeptabel ist, sollten Sie nach einer anderen Tabellenkalkulationsanwendung suchen, die Zahlen mit höherer Genauigkeit darstellen kann. Denken Sie jedoch daran, dass die Einschränkung auch dann besteht, wenn Sie eine solche Anwendung finden. Es ist nur die Größe des Fehlers, die anders ist.

Tibi
quelle