Sunday 4 June 2017

Floating Point Mantissen Exponent Binär Optionen


Floating Point Representation Basics. Es gibt Beiträge zur Darstellung von Gleitkomma-Format Das Ziel dieses Artikels ist es, eine kurze Einführung in das Gleitkomma-Format zu liefern. Die folgende Beschreibung beschreibt Terminologie und primäre Details der IEEE 754 binäre Gleitkomma-Darstellung Die Diskussion beschränkt sich auf Single Und doppelte Präzisionsformate. Normalerweise wird eine reelle Zahl im Binär im folgenden Format dargestellt. Wobei ich m und F n entweder 0 oder 1 von Integer - und Fraktionsteilen sein. Eine endliche Zahl kann auch durch vier ganzzahlige Komponenten dargestellt werden, Ein Zeichen s, eine Basis b, eine Bedeutung und m und ein Exponent e Dann wird der numerische Wert der Zahl als ausgewertet. -1 sxmxbe Wo m b. Ddie abhängig von der Basis und der Anzahl der Bits, die verwendet werden, um verschiedene Komponenten zu codieren, definiert der IEEE 754 Standard fünf grundlegende Formate Unter den fünf Formaten sind die Binär32- und die Binary64-Formate einpräzise und doppelte Präzisionsformate Die Basis ist 2.Table 1 Precision Representation. Single Precision Format. As in Tabelle 1 erwähnt das einzelne Präzisionsformat hat 23 Bits für Bedeutung und 1 steht implizit Bit, Details unten, 8 Bits für Exponenten und 1 Bit für Zeichen. Zum Beispiel Die rationale Zahl 9 2 kann wie folgt in ein einzelnes Präzisions-Float-Format umgewandelt werden. Das Ergebnis wird normiert, wenn es mit führendem 1 Bit dargestellt wird, dh 1 001 2 x 2 2 Ähnlich, wenn die Zahl 0 000000001101 2 x 2 3 normalisiert ist, Es erscheint als 1 101 2 x 2 -6 Weglassen dieses implizite 1 auf links Extrem gibt uns die Mantisse der Schwimmerzahl Eine normalisierte Zahl liefert mehr Genauigkeit als entsprechende de-normalisierte Zahl Das implizierte höchstwertige Bit kann Verwendet werden, um noch genauere Bedeutung zu repräsentieren 23 1 24 Bits, die als subnorme Darstellung bezeichnet werden. Die Gleitkommazahlen sollen in normalisierter Form dargestellt werden. Die subnormalen Zahlen fallen in die Kategorie der de-normalisierten Zahlen. Die subnorme Darstellung verringert den Exponentenbereich leicht Kann nicht normalisiert werden, da dies zu einem Exponenten führen würde, der nicht in das Feld passt. Ungewöhnliche Zahlen sind weniger genau, dh sie haben weniger Platz für Nicht-Null-Bits im Fraktionsfeld, als normalisierte Zahlen. In der Tat sinkt die Genauigkeit als die Größe der Subnorme Zahl verringert Allerdings ist die subnorme Darstellung bei der Ablage von Lücken der Gleitkomma-Skala nahe Null nützlich. Mit anderen Worten kann das obige Ergebnis als -1 0 x 1 001 2 x 2 2 geschrieben werden, was die ganzzahligen Komponenten als s 0 ergibt, B 2, Bedeutung m 1 001, Mantisse 001 und e 2 Die entsprechende Einzelpräzisions-Floating-Nummer kann in Binär dargestellt werden, wie unten dargestellt. Dort soll das Exponent-Feld 2 sein , Dennoch codiert als 129 127 2 genannt voreingenommenen Exponenten Das Exponentenfeld ist in einem einfachen Binärformat, das auch negative Exponenten mit einer Codierung wie Zeichengröße, 1 s Kompliment, 2 s Komplement, etc. darstellt. Der voreingenommene Exponent wird für die Darstellung von negativen Exponenten verwendet Voreingenommenen Exponenten hat Vorteile gegenüber anderen negativen Darstellungen bei der Durchführung eines bitweisen Vergleichs von zwei Gleitkommazahlen für Gleichheit. Eine Vorspannung von 2 n-1 1, wobei n von Bits, die in Exponenten verwendet werden, wird dem Exponenten e hinzugefügt, um den vorgespannten Exponenten E zu erhalten Kann der vorgespannte Exponent E der einzelnen Präzisionszahl erhalten werden. Der Bereich des Exponenten im Einzelpräzisionsformat ist -126 bis 127 Andere Werte werden für spezielle Symbole verwendet. Hinweis Wenn wir eine Gleitkommazahl auspacken, wird der erhaltene Exponent voreingestellter Exponent Subtrahieren 127 aus dem vorgespannten Exponenten können wir den unvoreingenommenen Exponenten extrahieren. Die folgende Abbildung stellt die Gleitkomma-Skala dar. Das Präzisionsformat ist in Tabelle 1 das doppelte Präzisionsformat Hat 52 Bits für Bedeutung und 1 steht implizites Bit, 10 Bits für Exponenten und 1 Bit für Vorzeichen Alle anderen Definitionen sind für das Doppelpräzisionsformat gleich, mit Ausnahme der Größe der verschiedenen Komponenten. Die kleinste Änderung, die in der Gleitkomma-Darstellung dargestellt werden kann, wird aufgerufen Als Präzision Der Bruchteil einer einzigen Präzisions-Normalisierungszahl hat genau 23 Bits Auflösung, 24 Bits mit dem implizierten Bit Dies entspricht log 10 2 23 6 924 7 die Kennlinie der Logarithmus-Dezimalstellen der Genauigkeit Ähnlich bei doppelten Genauigkeitszahlen Die Präzision ist log 10 2 52 15 654 16 Dezimalstellen. Die Genauigkeit in der Gleitkomma-Darstellung wird durch die Anzahl der Signifikanz - und Bits bestimmt, während der Bereich durch den Exponenten begrenzt ist. Nicht alle reellen Zahlen können im Gleitkomma-Format genau dargestellt werden. Für jede beliebige Zahl, die nicht schwebt Punkt-Nummer, gibt es zwei Optionen für Gleitkomma-Näherung, sagen wir, die nächste Fließkommazahl kleiner als x als x und die nächste Floati Ng Punktzahl größer als x als x Ein Rundungsvorgang wird an der Anzahl der signifikanten Bits im Mantissenfeld durchgeführt, basierend auf dem gewählten Modus. Der Round-Down-Modus bewirkt, dass x auf x gesetzt ist. Der Round-Up-Modus bewirkt, dass x auf x gesetzt ist Null-Modus verursacht x ist entweder x oder x, je nachdem, welcher Wert zwischen null ist und der runde zum nächsten Modus setzt x auf x oder x je nachdem, welcher der x am nächsten ist. Normalerweise runde zum nächstgelegenen ist der am meisten benutzte Modus Die Nähe der Gleitpunktdarstellung zum aktuellen Wert wird aufgerufen Als Genauigkeit. Spezielle Bitmuster. Der Standard definiert wenige spezielle Gleitkomma-Bit-Muster Zero kann t haben die meisten signifikante 1 Bit, daher kann t normalisiert werden Die verborgene Bit-Darstellung erfordert eine spezielle Technik für die Speicherung Null Wir haben zwei verschiedene Bit-Muster 0 und -0 für den gleichen numerischen Wert Null Für die Einzelpräzisions-Gleitkomma-Darstellung sind diese Muster unten angegeben. 00000000 00000000000000000000000 0,1 00000000 00000000000000000000000 -0.Similarly the standard Stellt zwei verschiedene Bitmuster für INF und - INF dar. Dasselbe sind unten angegeben. 11111111 00000000000000000000000 INF.1 11111111 00000000000000000000000 - INF. All dieser Sondernummern, sowie andere Sonderzahlen unten sind subnormale Zahlen, dargestellt durch die Verwendung von Spezielles Bitmuster im Exponentenfeld Das reduziert den Exponentenbereich etwas, aber das ist durchaus akzeptabel, da der Bereich so groß ist. Ein Versuch, Ausdrücke wie 0 x INF, 0 INF usw. zu berechnen, macht keinen mathematischen Sinn. Der Standard ruft das Ergebnis auf Solche Ausdrücke wie keine Zahl NaN Jede nachfolgende Expression mit NaN ergibt NaN Die Darstellung von NaN hat nicht-null Bedeutung und alle 1s im Exponentenfeld Diese werden unten für ein einziges Präzisionsformat angezeigt x ist don t care bits. x 11111111 1 m 0000000000000000000000.Wenn m kann 0 oder 1 Dies gibt uns zwei verschiedene Darstellungen von NaN.0 11111111 110000000000000000000000 Signalisierung NaN SNaN.0 11111111 100000000000000000000000 Ruhig NaN QNaN. U Stetig QNaN und SNaN werden für die Fehlerbehandlung verwendet QNaN erheben keine Ausnahmen, da sie sich durch die meisten Operationen ausbreiten. Während SNaN sind, welche, wenn sie von den meisten Operationen verbraucht werden, eine ungültige Ausnahme auslösen wird. Overflow und Underflow. Overflow wird angezeigt, wenn das wahre Ergebnis von Eine arithmetische Operation ist endlich, aber grßer als die größte Gleitkommazahl, die unter Verwendung der gegebenen Genauigkeit gespeichert werden kann. Unterströmung soll auftreten, wenn das wahre Ergebnis einer arithmetischen Operation in der Größenordnung kleiner ist als die kleinste normalisierte Gleitkommazahl, die kann Gespeichert werden Überlauf kann in Berechnungen ignoriert werden, während Unterlauf effektiv durch Null ersetzt werden kann. Der IEEE 754 Standard definiert ein binäres Gleitkommaformat Die Architekturdetails bleiben den Hardwareherstellern vorbehalten Die Speicherreihenfolge einzelner Bytes in binärer Gleitkommazahl variiert von Architektur zu Architektur. Dank Venki zum Schreiben des obigen Artikels bitte wri Te Kommentare, wenn Sie etwas falsch finden, oder Sie möchten mehr Informationen über das Thema, das oben diskutiert zu teilen. Advanced Binary. Before Lesen zu viel in Fortgeschrittene Fortgeschrittene oder Master Tutorials, stellen Sie sicher, um die Grundlagen der Binary Wenn Sie don t, es Kann Verwirrung verursachen. Das erweiterte Binär-Konzept, Floating-Punkte sind Teil der Programmierung seit dem Anfang, aber wie funktioniert der Computer übersetzen Dezimalzahlen in Maschinencode. In diesem Tutorial werde ich erklären, was das Gleitkomma-System ist, wie es verwendet wird Und wie ein Computer übersetzt eine Dezimalzahl in binary. Floating Punkte werden in meist jedem einzelnen Programm oder Programmiersprache verwendet, ist es eine der genauesten und effizientesten Möglichkeiten der Speicherung von Dezimalstellen Nach diesem Tutorial können Sie verstehen, was ein Floating Punkt-Struktur ist und wie können Sie sogar andere APIs, die Ihnen erlauben, Ihre eigenen Präzision schwimmenden Punkte zu erstellen. Ein Gleitkomma wird meist als Float oder ein Doppel, in den meisten Lan bezeichnet Guckt einen doppelten oder doppelten Präzisions-Gleitkomma wird verwendet, da er eine breitere Palette und eine bessere Genauigkeit bietet als ein Schwimmer oder ein einziger Präzisions-Gleitkomma. Einige Sprachen und APIs bieten Ihnen die Möglichkeit, größere Gleitkomma oder sogar kleinere zu schaffen. Dies ermöglicht Ihnen, zu ändern Die Genauigkeit und Reichweite der Dezimalstellen Die bekanntesten Floating-Punkte sind 16 Bits halb, 32 Bits Single, 64 Bits Double, 128 Bits Quadruple, 256 Bits octuple. All Floating Points haben eine ähnliche Struktur, ein Vorzeichen Bit 0 oder 1, die den Computer sagt Ob die Dezimalzahl negativ ist oder nicht, der Exponent, der dem Computer mitteilt, welcher Exponent von 2 verwendet wird, und die Mantisse, die dem Computer den Wert sagt. Jeder Typ hat einen anderen für den Exponenten und die Mantisse, aber natürlich bleibt das Zeichenbit Gleiche, da es ein Boolesches ist. Exponent und Mantissen Konzept. Die Mantisse und der Exponent sind oft in der Wissenschaft, wie Chemie, Physik und Biologie gesehen Es ist oft als wissenschaftliche Notation bekannt, wo Sie die erste Zahl Die isn t 0 zuerst ist und den Exponenten an den Wert anpassen. Zum Beispiel 0 15 wird geschrieben als 1 5 10 -1, 15 wird geschrieben als 1 5 10 1 In diesen Fällen ist die Mantisse 1 5 und der Exponent wird Sei entweder -1 oder 1.But Binär arbeitet anders, da es nur 2 Optionen hat, in diesem Fall, wenn du 1 0101 2 3 hast, ist das erste 1 nicht toll da da du die erste nummer nicht 0 sein möchtest Es wird immer ein 1 sein In diesem Fall wird die Mantisse 0101 sein und der Exponent wird 3 Natürlich 1 0101 2 3 bedeutet 1010 1, was auf 2 3 2 1 2 -1 8 2 0 5 10 5.To übersetzt wird Umwandlung der Dezimalzahl in Gleitkomma können Sie 3 verschiedene Ansätze, die logische Ansatz, die mathematische Ansatz und die Programmierer Ansatz Der logische Ansatz ist der Weg, um es zu tun, ohne einen Rechner oder einen Computer mit Ihnen, die mathematische Weg ist es zu tun Indem man einfach eine Formel ausfüllt und der Programmierer Weg ist, einen Algorithmus laufen. Die logische Weise ist, wenn Sie über unser Dezimalsystem denken, verwenden wir einen Punkt zu Beachten Sie, dass der Exponent beginnt, negativ zu werden 19 31 bedeutet 1 10 1 9 10 0 3 10 -1 1 10 -2 Also eine Binärzahl mit einer Dezimalzahl dazwischen würde das gleiche bedeuten, aber nur mit einer Basis von 2. Eine Erklärung Von was 11 01 in halb binär bedeuten würde. Jetzt, um 11 01 in eine REAL-Binärzahl umzuwandeln, müsstest du das in die wissenschaftliche Notation übersetzen müssen, in diesem Fall 1 101 2 1 Das würde einen Exponenten von 1 und eine Mantisse machen 101 Wir kennen auch das Vorzeichen-Bit, das ist 0, da es keine negative Zahl ist. Die letzte Sache zu bestimmen ist die Mantisse und der Exponent, den du verwenden möchtest, wenn du ein Doppel benutzt hast, genau wie dieses Beispiel hast du Ein Exponent von 11 Bits und eine Mantisse von 52 Bits. Der Exponent dieser Zahl isn t nur 1, das ist, weil die Hälfte des Exponenten s-Wertes für die negativen Exponenten reserviert ist. Dies ist, wenn du 2 exponentbit-1 -1 addierst Exponent hatten wir vorher, also würde es 1 2 11-1 -1 0 2 10 1024 100 0000 0000 sein, was seit der Hälfte des Wertes des Exponenten sinnvoll ist Wird von negativen Exponenten reserviert, 1023 011 1111 1111 als Exponent 2 0 1022 011 1111 1110 2 -1, etc. Finally, die Mantisse benötigt 52 Bits, also für uns die Mantisse wäre nicht 101, aber es wäre 101 49 Null s. Now hast du den endgültigen Exponenten und die Mantisse zusammengestellt, mit dem Vorzeichen Bit 1 als Vorzeichen, 100 0000 0000 als Exponent und 101 49 null s als Mantisse 1100 0000 0000 1010 48 null s oder C0 0A 00 00 00 00 00 00.Die Umwandlung mit Logik in Formeln, können wir definieren, ein paar Formeln. Wir können die mathematische Umwandlung durch Hinzufügen von ein paar bitweise Operatoren Java. public statischen Byte getMantissa double d öffentlichen statischen Byte getMantissa float f öffentlichen statischen Byte getExponent double d public Statisches Byte getExponent float f public static long asLong double d Byte e getExponent d Byte m getMantissa d Byte Bit Byte em 1 langer Wert d. Klicken Sie hier, um mehr über Advanced Binary. Floating-Point Numbers zu erfahren. Aus dieser Abbildung können Sie die Das Zeichenbit ist 1 Was eine negative Zahl anzeigt. Der Exponentwert ist 10000010 binär oder 130 dezimal Subtrahieren 127 von 130 Blättern 3, was der eigentliche Exponent ist. Die Mantisse erscheint als die folgende Binärzahl. Es gibt einen verstandenen Binärpunkt links von der Mantisse, der ist Immer vorangestellt 1 Diese Ziffer wird aus der gespeicherten Form der Gleitkommazahl weggelassen. Hinzufügen von 1 und der Binärpunkt zum Anfang der Mantisse gibt den folgenden Wert an. Um die Mantisse für den Exponenten anzupassen, verschieben Sie den Dezimalpunkt an die Links für negative Exponentenwerte oder rechts für positive Exponentenwerte Da der Exponent drei ist, wird die Mantisse wie folgt angepasst: Das Ergebnis ist eine binäre Gleitkommazahl Binärziffern links vom Dezimalpunkt repräsentieren die Potenz von zwei entsprechend ihrer Position Zum Beispiel steht 1100 für 1 2 3 1 2 2 0 2 1 0 2 0, dh 12.Binärziffern rechts vom Dezimalpunkt stellen auch die Potenz von zwei dar, die ihrer Position entsprechen Je nachdem, die Potenzen sind negativ Zum Beispiel stellt 100 1 2 -1 0 2 -2 0 2 -3 dar, was gleich 5 ist. Die Summe dieser Werte ist 12 5 Da das Vorzeichenbit gesetzt war, sollte diese Zahl negativ sein. So, Der hexadezimale Wert 0xC1480000 ist -12 5.Related Knowledgebase Artikel. Development Tools. Hardware Collateral. Important information. This Website verwendet Cookies, um Informationen auf Ihrem Computer zu speichern Durch die Nutzung unserer Website, stimmen Sie zu unseren Cookies. Don t zeigen diese Nachricht Again. Decimal to Floating-Point Converter. About der Dezimal-Floating-Point-Konverter. This ist ein Dezimal-Binär-Gleitkomma-Konverter Es wird eine Dezimalzahl auf seine nächste Einzel-Präzision und Doppel-Präzision IEEE 754 binären Gleitkomma umwandeln Nummer, mit rund-halb-zu-even-Rundung der Standard-IEEE-Rundungs-Modus Es ist mit beliebiger Präzisions-Arithmetik implementiert, so dass seine Conversions korrekt gerundet werden Es wird sowohl normale als auch subnorme Zahlen umwandeln und werden Zahlen umwandeln, die in unendlich übergehen R-Unterlauf auf Null. Die resultierende Gleitkommazahl kann in zehn Formen in dezimaler, in binärer, in normalisierter dezimaler wissenschaftlicher Notation, in normalisierter binärwissenschaftlicher Notation, als normalisierte Dezimalzeit eine Kraft von zwei, als Dezimal-Ganzzahl angezeigt werden Eine Macht von zwei, als Dezimal-Ganzzahl mal eine Potenz von zehn, als hexadezimale Gleitkomma-Konstante, in roher Binärdatei und in rohem Hexadezimal Jede Form repräsentiert den genauen Wert der Gleitkommazahl. Warum verwenden Sie diesen Konverter Konverter wird Ihnen zeigen, warum Zahlen in Ihrem Computer-Programme, wie 0 1, nicht verhalten, wie Sie d erwarten. Inside der Computer, die meisten Zahlen mit einem Dezimalpunkt kann nur eine andere Zahl angenähert werden, nur ein kleines bisschen weg von dem, was Sie wollen , Muss für ihn stehen. Zum Beispiel wird bei einfachem Gleitkomma 0 1 0 100000001490116119384765625 Wenn Ihr Programm 0 1 druckt, liegt es bei Ihnen, wenn es druckt 0 100000001, es liegt immer noch, aber zumindest Sie sagen Ihnen, dass Sie wirklich don T haben 0 1.How, um diesen Konverter zu verwenden. Geben Sie eine positive oder negative Zahl, entweder in Standard zB 134 45 oder Exponent zB 1 3445e2 Form Geben Sie Bruchwerte mit einem Dezimalpunkt an und verwenden Sie keine Kommas Im Wesentlichen können Sie eingeben, was ein Computerprogramm akzeptiert als Gleitkomma-Literal, außer ohne Suffix wie f. Überprüfen Sie die Boxen für die IEEE-Präzision, die Sie wählen möchten Double Single oder beide Double ist die Standard-Double bedeutet eine 53-Bit-Bedeutung und weniger, wenn subnormal mit einem 11-Bit Exponent Single bedeutet eine 24-Bit-Signifikanz und weniger, wenn sie mit einem 8-Bit-Exponent subnormal sind. Überprüfen Sie die Felder für ein beliebiges Ausgabeformat, das Sie wählen möchten. Ein oder alle zehn Dezimal ist die default. Click Convert to convert. Click Clear, um das Formular zurückzusetzen und zu starten Von scratch. Wenn Sie eine andere Nummer umwandeln möchten, geben Sie einfach die ursprüngliche Zahl ein und klicken Sie auf Konvertieren, da es keine Notwendigkeit gibt, zuerst auf Löschen zu klicken. Es gibt zehn Ausgabeformulare, um aus zu wählen. Dezimal Zeigt die Fließkommazahl in dezimal an , Wenn nötig Sary, um alle Ziffern zu sehen. Binär Zeigt die Gleitkommazahl im Binär an Expand Ausgabefeld, wenn nötig, um alle Ziffern zu sehen. Normalisierte dezimal wissenschaftliche Notation Zeigt die Gleitkommazahl in dezimal, aber kompakt, mit normalisierten wissenschaftlichen Notation Expand Ausgabe Box, wenn nötig, um alle Ziffern zu sehen. Normalisierte binäre wissenschaftliche Notation Zeigen Sie die Gleitkommazahl in binärer, aber kompakt, mit normalisierten binären wissenschaftlichen Notation. Note subnormalen Zahlen werden normalisiert, mit ihrem tatsächlichen exponent. Normalized Dezimal mal eine Macht von Zwei Zeigen Sie die Gleitkommazahl in einer hybriden normalisierten wissenschaftlichen Notation an, als normalisierte Dezimalzahl mal eine Potenz von zwei. Dezimale Ganzzahl mal eine Potenz von zwei Zeigen Sie die Gleitkommazahl als Dezimalzahl an, wie oft eine Binärdarstellung Der dezimalen Ganzzahl ist das Bitmuster der Gleitkomma-Darstellung, weniger nachlaufende Nullen Diese Form ist für negative Exponenten interessant, da sie Stellt die Gleitkommazahl als dyadische Fraktion dar. Dezimal-Integer-Zeit eine Zehnerpotenz Zeigt die Gleitkommazahl als Dezimalzahl an, eine Zehnzahl von zehn Diese Form ist für negative Exponenten am interessantesten, da sie die Gleitkommazahl darstellt Als Fraktion Erweiterung der Ausgabebox, falls nötig, um alle Ziffern zu sehen. Hexadezimale Gleitkomma-Konstante Zeigt die Gleitkommazahl als hexadezimale Gleitkomma-Konstante an. Hinweis Es gibt viele Möglichkeiten, hexadezimale Gleitkomma-Konstanten zu formatieren Sehen Sie, ob Sie zum Beispiel die Ausgabe von Java, Visual C, gcc C und Python-Programmen verglichen haben. Die Unterschiede in verschiedenen Sprachen sind oberflächlich, obwohl nachlaufende Nullen angezeigt werden können oder nicht, positive Exponenten können ein Pluszeichen haben oder auch nicht, Etc Dieser Konverter formatiert die Konstanten ohne nachlaufende Nullen und ohne Pluszeichen. Note Wie viele Programmiersprachen zeigt dieser Konverter subnorme Zahlen unnormalisiert, mit ihren Exponenten auf das Minimum n gesetzt Ormal exponent. Note Die letzte hexadezimale Ziffer in einer hexadezimalen Gleitkomma-Konstante kann nachlaufende binäre 0s innerhalb dieses doesn t notwendigerweise implizieren, dass diese Bits im ausgewählten IEEE-Format vorhanden sind. Raw binary Zeigt die Gleitkommazahl in ihrem rohen IEEE-Format-Zeichen-Bit an Gefolgt von der Exponent-Feld gefolgt von der Bedeutung und Feld. Raw hexadezimal Zeigen Sie die Gleitkommazahl in seinem rohen IEEE-Format, entspricht dem Roh-Binär-Format, aber kompakt in Hexadezimal ausgedrückt. Sehen Sie hier für weitere Details zu diesen Ausgabeformen. Es gibt zwei Ausgabewerte. Ixxact Wenn aktiviert, zeigt dies an, dass die Umwandlung ungenau war, das heißt, es musste auf eine Annäherung der Eingangsnummer gerundet werden. Die Umwandlung ist bei der Dezimalausgabe ungenau Stimmt nicht mit der Dezimal-Eingabe überein, aber das ist ein schnellerer Weg zu tell. Note Dieser Konverter markiert Überlauf in Unendlichkeit und Unterlauf auf Null als ungenau. Subnormal Wenn aktiviert, zeigt dies, dass die Zahl zu klein war und mit weniger als voller Präzision umgewandelt wurde Die tatsächliche Präzision wird in Klammern angezeigt. Ich schrieb diesen Konverter von Grund auf nicht auf native Umwandlung Funktionen wie Strtod oder Strtof oder printf basiert Es basiert auf dem großen Integer-basierten Algorithmus Ich beschreibe in meinem Artikel Correct Decimal To Floating-Point mit Big Integers I ve implementiert es mit BCMath. Für praktische Gründe, habe ich eine beliebige etwas begrenzt auf die Länge der Dezimal-Eingabe Sie erhalten eine Fehlermeldung, wenn Sie es schlagen Dies wird Filter Eingaben, die w Sollte sonst auf Unendlichkeit oder Unterlauf auf Null übergehen, aber es wird auch verhindern, dass Sie in einige harte halbe Rundungsfälle eintreten. Für die Aufzeichnung aber akzeptiert dieser Konverter alle harten Beispiele, die ich auf meiner Website besprochen habe. Für alle Eingaben, die jedoch akzeptiert werden, Ausgabe ist korrekt, ungeachtet irgendwelcher Bugs, die meinem umfangreichen Test zu entgehen. Unterstanding Floating Point Precision, aka Warum Excel Gib mir scheinbar falsche Antworten. Wir bekommen manchmal Mails von unseren Kunden behaupten, einen Berechnungsfehler in Excel gefunden haben, wenn in der Tat die Berechnung isn t Falsch, aber die Nebenwirkungen der Binär-Gleitkomma-Präzision machen es so aus Der heutige Autor Jessica Liu, ein Programm-Manager auf dem Excel-Team, diskutiert die Art und Weise, wie Excel Berechnungen durchführt, erklärt, warum Sie manchmal Antworten sehen, die Sie nicht erwarten können und bietet Einige Tipps, wie man Rundungsprobleme vermeiden kann. Schauen Sie sich die folgende Tabelle an. Ich möchte in der Lage sein, schnell die Fälle zu identifizieren, in denen der absolute Unterschied großartig ist Er oder gleich 0 005 Also setze ich eine bedingte Formatierungsregel auf die absolute Differenzspalte an, um Werte zu schreiben, die größer oder gleich 0 005 sind, um rot zu sein. Als scan down the table merke ich, dass der Wert von 0 005 nicht hervorgehoben wird Ich überprüfe über meine bedingte Formatierungsregel und die Formel, die ich verwendet habe, um die absolute Differenz ABS A2-B2 zu berechnen, sie scheinen korrekt zu sein, dann steigere ich die Präzision der absoluten Differenzspalte, um genauere Ergebnisse zu erhalten, die ich entdecke, dass meine Ergebnisse sich geändert haben Warum gibt es 1 3240 1 3190 0 0049999999999999.Haben Sie jemals eine ähnliche Situation, wo Ihre Kalkulation gibt Ihnen nicht das Ergebnis, das Sie für eine scheinbar einfache Berechnung erwartet haben Sie haben über Ihre Berechnungen überprüft und kann immer noch nicht herausfinden, wo es ging falsch Szenario, dem Sie gegenüberstehen, kann aufgrund der Gleitkomma-Präzision sein. Excel wurde nach dem IEEE-Standard für Binär-Gleitpunkt-Arithmetik IEEE 754 entworfen. Der Standard definiert, wie schwimmend - Punkt-Nummern werden gespeichert und berechnet Der IEEE 754-Standard ist weit verbreitet, weil es erlaubt, dass Floating-Point-Nummern in einem angemessenen Raum gespeichert werden und Berechnungen relativ schnell auftreten können. Der Vorteil von Floating über Fixpunkt-Darstellung ist, dass es unterstützen kann Ein breiterer Bereich von Werten Beispielsweise kann eine Fixpunktdarstellung mit 5 Dezimalstellen mit dem nach der dritten Ziffer positionierten Dezimalpunkt die Zahlen 123 34, 12 23, 2 45 usw. darstellen, wohingegen Gleitkomma-Darstellung mit 5-stelliger Genauigkeit Kann 1 2345, 12345, 0 00012345 usw. darstellen. Ebenso erlaubt die Gleitkomma-Darstellung auch Berechnungen über einen weiten Bereich von Größen, während die Präzision beibehalten wird. Beispielsweise. Flash-Punkt-Darstellung mit 4-stelliger Genauigkeit.1 1 10 -1 x 1 1 10 -1 1 21 x 10 -2.Fixpunkt-Darstellung mit 4-stelliger Präzision mit dem nach der ersten Ziffer positionierten Dezimalpunkt. 110 x 0 110 0 012.Alle Zahlen im Gleitkommaformat a Rationale Zahlen Irrationale Zahlen wie oder oder nicht beendende rationale Zahlen müssen approximiert werden Die Anzahl der Ziffern der Präzision begrenzt auch die Genauigkeit der Zahlen Excel-Speicher 15 signifikante Präzisionsziffern Beispielsweise kann die Zahl 1234567890123456 nicht genau dargestellt werden, wenn 15 Ziffern der Präzision werden verwendet. Der IEEE 754 Gleitkomma-Standard erfordert, dass die Zahlen im Binärformat gespeichert werden. Das bedeutet, dass eine Umwandlung erfolgen muss, bevor die Zahlen in Berechnungen verwendet werden können. Wenn die Zahl genau im Gleitkommaformat dargestellt werden kann, Umwandlung ist genau Wenn nicht, dann führt die Umwandlung zu einem gerundeten Wert, der den ursprünglichen Wert repräsentiert. Zahlen, die im Dezimalformat exakt erscheinen, müssen möglicherweise bei der Umwandlung in binären Gleitkomma angenähert werden. Beispielsweise kann der Bruch 1 10 sein Dargestellt im Dezimalformat als rationale Zahl 0 1 Allerdings kann 0 1 nicht genau im Binär-Gleitkomma von endlichen Präzis dargestellt werden Ion 0 1 wird die wiederkehrende binäre Dezimalzahl 0 0001100110011, wo die Sequenz 1100 unendlich wiederholt wird Diese Zahl kann nicht in einer endlichen Menge an Raum dargestellt werden Also in Excel wird es um ca. 2 8E-17 abgerundet, wenn es gespeichert ist Floating-Point-Nummer. Eine Gleitkommazahl wird in Binärdateien in drei Teilen innerhalb eines 65-Bit-Bereichs des Vorzeichens, des Exponenten und der Mantisse gespeichert. Das Zeichen speichert das Vorzeichen der Zahl positiv oder negativ 0 repräsentiert eine positive Zahl während 1 Stellt eine negative Zahl dar. Der Exponent speichert die Potenz von 2, auf die die Zahl angehoben oder gesenkt wird. Das Exponentfeld muss sowohl positive als auch negative Exponenten darstellen können Um zu vermeiden, dass man negative Exponenten speichern muss, wird ein Bias-Wert dem tatsächlichen hinzugefügt Exponent Die Vorspannung für Doppelpräzisionszahlen ist 1023 Zum Beispiel zeigt ein gespeicherter Wert von 1000 einen Exponenten von 1000 1023 oder -23 an. Die Mantisse speichert die tatsächliche Zahl. Es besteht aus einem implizierten führenden Bit und dem Frakti On bits Die Speichergröße der Mantisse bestimmt, wie nahe zwei benachbarte Floating-Point-Nummern sein können Die Mantisse und der Exponent werden in separaten Komponenten gespeichert Die Genauigkeit einer Zahl variiert je nach Größe der Mantisse Excel kann Zahlen von 1 79769313486232E308 bis 2 speichern 2250738585072E-308 Allerdings kann es dies nur innerhalb von 15 Ziffern von precisionmon tun. Beispiele für Fehler aufgrund von Floating Point Calculation. Example 1 Verlust der Präzision bei der Verwendung sehr großer Zahlen. Der resultierende Wert in A3 ist 1 2E 100, der gleiche Wert wie A1 Dies liegt daran, dass Excel 15 Ziffern der Genauigkeit speichert. Mindestens 100 Ziffern der Genauigkeit würden benötigt, um die obige Formel zu berechnen. Beispiel 2 Verlust der Präzision bei Verwendung von sehr kleinen Zahlen. Der resultierende Wert in Zelle A1 ist 1 00012345678901 anstelle von 1 000123456789012345 Dies ist Noch einmal ist, weil Excel 15 Ziffern der Präzision speichert Mindestens 19 Ziffern der Präzision wäre erforderlich, um die Formel oben zu berechnen. Beispiel 3 Wiederholen Binärzahlen. Man Kombinationen von arithmetischen Operationen auf Gleitkommazahlen können zu Ergebnissen führen, die durch sehr kleine Mengen nicht korrekt erscheinen. Beispielsweise kann die Gleichung auf die Menge -2 78E-17 oder -0 0000000000000000278 anstelle von 0 ausgewertet werden Aufgrund der Tatsache, dass die IEEE 754-Standard erfordert, dass Zahlen im Binärformat gespeichert werden Wie ich bereits beschrieben habe, können nicht alle Dezimalzahlen exakt in Binär umgewandelt werden, wie im Fall von 0 1. Die Umwandlung hat den Präzisionsverlust verursacht. Korrekturpräzision Errors. Let uns gehen zurück zu meinem ersten Beispiel, wo meine bedingte Formatierung scheinbar nicht funktioniert Ich weiß jetzt, dass aufgrund der Tatsache, dass die Zahlen, die ich verwendet, um die absolute Differenz zu berechnen hatte nicht exakte binäre Äquivalente Dies führte zu 1 3240 1 3190 0 0049999999999999.Es gibt zwei grundlegende Möglichkeiten, in denen man einige der Fehler aufgrund der Gleitkomma-Berechnung kompensieren kann. Die erste Methode ist, die ROUND-Funktion zu verwenden. Die ROUND-Funktion kann verwendet werden Um die Zahlen auf die Anzahl der Dezimalstellen, die in Ihren Berechnungen erforderlich ist Für meine absolute Differenz Spalte, ich benötige nur 4 Dezimalstellen Genauigkeit Also ich ändere die Formel in der absoluten Differenz Spalte aus. Meine bedingte Formatierung Regel funktioniert wie erwartet jetzt seit 0 0049999999999999 wurde auf 0 0050 gerundet. Die zweite Methode, um zu verhindern, dass Rundungsfehler Ihre Arbeit beeinflussen, ist die Verwendung der Präzision als angezeigte Option Diese Option zwingt den Wert jeder Zahl im Arbeitsblatt, um der angezeigte Wert zu sein Diese Schritte. Klicken Sie auf Microsoft Office Button - Excel-Optionen - Advanced. In der Wenn Sie diesen Arbeitsmappe Abschnitt berechnen, wählen Sie die Arbeitsmappe, die Sie wollen, und wählen Sie dann die Set precision als angezeigt Kontrollkästchen. Going zurück zu meinem absoluten Unterschied Beispiel, setze ich die Nummer Format, um vier Dezimalstellen zu zeigen, und dann schalte ich Precision als angezeigte Option ein Da der Anzeigewert der tatsächliche Wert in der Zelle ist, ist meine bedingte Formatti Ng funktioniert ordnungsgemäß. Es ist wichtig zu beachten, dass, sobald die Arbeitsmappe gespeichert ist, alle Genauigkeit über vier Dezimalstellen verloren gehen Diese Option wirkt sich auf die aktive Arbeitsmappe einschließlich aller Arbeitsblätter aus. Sie können diese Option nicht rückgängig machen und die verlorenen Daten wiederherstellen, also speichern Sie Ihre Arbeitsmappe vor Ermöglichen dieser Option Diese Option wird in der Regel nicht empfohlen, es sei denn, Sie sind sicher, mehr Präzision wird nicht immer für Ihre Situation benötigt werden.

No comments:

Post a Comment