Wird dieses Excel-Verhalten mit einer großen Hex-Zahl erwartet?

3074
Dancrumb

Entschuldigung für den vagen Fragetitel, aber ich weiß nicht, wie ich das am besten beschreiben soll.

Wenn ich die folgende Nummer in eine Excel-Zelle einfügen:

5000097208326954 

es zeigt sich als

5E+15 

Das ist gut. Ich verstehe das. Wenn ich jedoch in die Funktionsleiste schaue, erscheint es als

5000097208326950 

Das verstehe ich nicht . Das Verhalten scheint unabhängig von der vorherigen Formatierung zu sein, die ich möglicherweise in die Zelle einfügte.

Dies ist in Excel 2003 SP3.

Fehle ich ein subtiles erwartetes Verhalten oder ist das ein Fehler?

3
Es gibt kein Hexadezimalzeichen in der Frage, sondern nur Dezimalzahlen (wenn auch nicht wissenschaftlich). Bitte bearbeiten Sie sowohl die Frage als auch die Tags. Suma vor 13 Jahren 0
5000097208326954 * ist * eine Hexadezimalzahl mit dem Dezimalwert 5.764.617.908.402.678.100 ... Ich gebe jedoch zu, dass die Hexadezimalzahl des Wertes wahrscheinlich irrelevant ist Dancrumb vor 13 Jahren 1

5 Antworten auf die Frage

6
GummiV

Jemand wird wahrscheinlich mit einer besseren Erklärung und einer Korrektur einhergehen, aber im Prinzip speichern Computer nur eine bestimmte Anzahl signifikanter Ziffern, wenn sie Fließkommazahlen und / oder große Ganzzahlen darstellen. Excel (zumindest standardmäßig) gibt nur die ersten 15 Ziffern der Zahl an und verwirft den Rest. Sie können dies überprüfen, indem Sie am Ende Ihrer Nummer zusätzliche Ziffern hinzufügen, z. 5000097208326954123, und diese Ziffern werden auf 5000097208326950000 gerundet.

Als Randbemerkung haben Sie wahrscheinlich das Hexadezimalsystem mit der wissenschaftlichen Notation verwechselt

Danke ... Ich verwechsle nicht mit wissenschaftlicher Notation ... Die Zahl, die ich gewählt habe, ist definitiv eine Hexadezimalzahl. Excel geht davon aus, dass es eine Dezimalzahl ist. Da ich keine mathematischen Operationen ausführen werde, sage ich Excel einfach, es als Text zu behandeln und damit fertig zu werden. Diese letzte Ziffer brachte mich jedoch ein wenig in den Sinn, also danke, dass Sie das geklärt haben! Dancrumb vor 13 Jahren 0
+1 Wenn Sie das Feld in eine Zahl ändern, wird es ebenfalls auf 5000097208326950 gerundet, wobei die 4 fällt. Die höchste zulässige Zahl ist 9.99999999999999E + 307 http://office.microsoft.com/de-de/excel-help/excel-specifications -und-Grenzwerte-HP005199291.aspx N4TKD vor 13 Jahren 0
3
Tim Williscroft

Excel erledigt alle Berechnungen als Gleitkommazahlen mit doppelter Genauigkeit. (64 binäre Bits insgesamt)

Das gibt Ihnen etwa 14 bis 15 Stellen in Dezimalzahlen.

5000 097 208 326 954

ist 16-stellig. Wenn Sie dies in Excel tun ...

A1 = 5000097208326954

A2 = A1 + 1

A3 = A2-A1

A3 zeigt 0 an.

Vollständige Offenlegung: Ich bin Mitglied der ACM und bin verpflichtet, die Öffentlichkeit über die Risiken des Computers zu informieren. Es steht in unserem Verhaltenskodex.

Bitte verwenden Sie Excel nicht für kritische Dinge.

Mit einem Taschenrechner erhalten Sie genauere Antworten.

Excel ist in C / C ++ geschrieben und verwendet 64-Bit-Zahlen. Es verwendet auch die Microsoft-Gleitkommabibliotheken, um Funktionen wie sin, cos und exp zu berechnen. Diese Bibliotheken sind im Vergleich zu wissenschaftlichen Bibliotheken ziemlich ungenau und arbeiten sogar mit den gleichen Größen.

Fließkomma ist gut für einfache Sachen, aber für wissenschaftliche Arbeit oder ernstes Engineering schrecklich, sie sind zu ungenau. Numerische Methoden, bei denen Sie immer und immer wieder Zahlen addieren und multiplizieren, werden im Gleitkomma schnell hässlich, wenn die 15 Ziffern der Genauigkeit weggehen, eine Ziffer alle 4 Multiplikationen.

Fließkomma ist schlecht für die Finanzarbeit (0,2 ist eine unendliche wiederkehrende Zahl in einem binären Fließkomma.) Wenn Sie also 1000-mal 0,2-Dollar addieren, geht etwas Geld verloren. Programmierer in der Finanzwelt verwenden unendlich viele Präzisionszahlen, wo sie müssen (wie beim Schreiben von Zahlen auf Papier). Dann verwenden sie spezielle Funktionen, um Geld zu rechnen. Wenn alles rund wird, geht kein Geld verloren.

Programmierer der alten Schule verwendeten FORTRAN für Mathematik, was die Mathematik in Dezimalzahlen wie Sie oder ich erledigt. Die Bibliotheken sind in FORTRAN sehr genau, da die Benutzer numerische Methoden erwarten. dafür ist es. Taschenrechner verwenden auch intern Dezimalzahlen.

Ich habe Excel verwendet, um mathematische Rundungsfehler in C-Programmen zu reproduzieren.

Sie können hübsche Diagramme Ihrer Berechnung auf diese Weise hoffnungslos falsch machen.

Wenn auch etwas abseits des Themas, könnten Sie bitte Ihr "Bitte verwenden Sie Excel nicht für kritische Dinge". Kommentar. Numerische Berechnungen arbeiten inhärent mit endlichen Genauigkeitszahlen und sind anfällig für die Ausbreitung von Rundungsfehlern. Excel ist jedoch schlechter als andere Methoden, z. Sie arbeiten mit Fließkommazahlen in Ihrer bevorzugten Programmiersprache? GummiV vor 13 Jahren 0
In Sprachen mit Bignums (unendliche Genauigkeit) oder BCD erhalten Sie wesentlich bessere Ergebnisse als in Excel. Smalltalk, FORTRAN, PERL, Java usw. können dies alles. Java verwendet keine MS-Mathematikbibliotheken, und die von ihnen verwendeten sind in den Antworten, die sie geben, näher an FORTRAN. Die CPU-Hardwaremethode ist manchmal sehr gut, aber Intel lässt Sie eine Geheimhaltungsvereinbarung unterschreiben, um die CPU-Errata jetzt zu sehen. Selbst wenn sie schlecht funktionierten, konnte ich nicht sagen. Sie können MAPLE verwenden, um etwas zu berechnen. es wird sehr schöne Antworten geben. Grundsätzlich ist Mathematik etwas, von dem die meisten Leute annehmen, dass es funktioniert, aber der Computer kann leicht falsch laufen. Tim Williscroft vor 13 Jahren 0
2
Xantec

Sie fragen, warum die letzte Ziffer als 0 anstelle von 4 angezeigt wird, ja?

Ich glaube, dass dieser Link die Antwort enthält. Wenn Sie unter Berechnungsspezifikationen nachsehen, beträgt die maximale Genauigkeit der Zahl 15 Ziffern. Wenn Sie sich die anderen Spezifikationen anschauen, sieht es so aus, als ob Excel wahrscheinlich immer noch den vollen Wert der von Ihnen eingegebenen Zahl enthält. Wenn Sie die Zahl in einer Formel verwenden, sollte sie dennoch korrekt berechnen.

Um ehrlich zu sein, die ganze bedeutende Zahl entging mir im College nicht, deshalb konnte ich Ihnen nicht sagen, warum Excel so eingerichtet wurde.

Dieses Forum kann Ihnen Hinweise geben, falls erforderlich, die eingebauten Einschränkungen zu überschreiten.

Wie können Sie außerdem das Format excel formatieren, um den Wert als HEX statt als DEC zu erkennen?

Ich bin anderer Ansicht. Ich glaube, dass Excel die abgerundeten Zahlen in keiner Weise "hält" und / oder sie für Berechnungen verwendet. Die nicht signifikanten Daten werden verworfen, wenn Excel die Nummer speichert. Bitte überlegen Sie, Ihre Antwort zu bearbeiten, um eine falsche Information der Leser zu vermeiden. GummiV vor 13 Jahren 1
2
AdamV

Wie bereits erwähnt, ist dies eine Beschränkung auf 15 signifikante Stellen, wenn Excel Zahlen speichert. Wenn es sich nicht um eine Zahl handelt, die Sie zum Berechnen von Werten nach ihrem Wert verwenden müssen, sondern um eine Referenz wie eine Seriennummer oder einen Produktcode, sollten Sie die Zelle am besten als Text formatieren (und nicht als Standardwert für "general") ) vor dem Einfügen, so dass alle Ziffern erhalten bleiben. Dies verhindert auch, dass es versucht wird, klug zu sein und in wissenschaftlicher Notation als "hilfreich" zu erscheinen.

Wenn dies wirklich eine Hexadezimalzahl ist (Sie haben jedoch ein Prüfling mit einer Ziffer größer als 9 ausgewählt), möchten Sie definitiv nicht, dass Excel es als Zahl behandelt. a) weil es angenommen wird, dass es dezimal ist, und dies wird fehlschlagen, wenn es Buchstaben enthält. b) Dies würde bedeuten, dass die Zahl noch größer ist, und wenn Sie sie in Dezimalzahlen konvertieren, würden Sie die 15 Ziffern weit überschreiten.

0
kokbira

Klicken Sie mit der rechten Maustaste auf eine Zelle oder in alle Zellen> Zellen formatieren> Wählen Sie eines der folgenden Formate:

  • number (oder ihre Varianten): als numerischer Wert zu erkennen
  • text: die beste Option, denn wenn Sie 0 auf der linken Seite verwenden können, werden sie angezeigt

Nun, ich konnte diese Lösung hier nicht sehen - nur einige Diskussionen über wissenschaftliche Notationen oder einen möglichen Fehler bezüglich Ihrer Hex-Zahlen.