Doppelte Präzision: Die erweiterte Präzision verstehen
Bei der Arbeit mit Datentypen mit doppelter Genauigkeit wird allgemein davon ausgegangen, dass die ungefähre Genauigkeit begrenzt ist auf 15 Dezimalstellen genau. Bestimmte Zahlentypen, wie z. B. 1,0/7,0, können jedoch eine Genauigkeit von 17 Dezimalstellen anzeigen, wenn sie intern als Double gespeichert werden.
Diese Anomalie ist auf das inhärente Design der IEEE-Double-Datendarstellung zurückzuführen. Werte mit doppelter Genauigkeit haben 53 signifikante Bits und bieten eine Genauigkeit von etwa 15,95 Dezimalstellen. Die C-Bibliothek rundet diesen Wert jedoch auf 15 ab, was zu einer theoretischen Genauigkeit von 15 Dezimalstellen führt. In Wirklichkeit wird der Wert von DBL_DIG aufgrund dieser Rundung auf 15 statt auf 16 gesetzt.
Die Bedeutung dieser erweiterten Genauigkeit wird mithilfe der Funktion nextafter() weiter erläutert. Diese Funktion berechnet die darstellbare Zahl, die einem gegebenen Wert am nächsten kommt. Bei der Untersuchung des Werts von 1,0/7,0 mit dieser Funktion zeigt die Ausgabe drei aufeinanderfolgende Werte mit unterschiedlichen letzten Ziffern: 0,14285714285714282, 0,14285714285714285 und 0,14285714285714288.
Der genaue Wert der zuletzt angezeigten Ziffer ist wird durch die vom Compiler durchgeführte Rundungsoperation bestimmt. In diesem Fall ändert sich die Ziffer bei jedem Schritt um 3, was darauf hinweist, dass die Genauigkeit etwa 16 Dezimalstellen beträgt. Während also die theoretische Genauigkeit eines Doubles 15 Dezimalstellen beträgt, bietet die erweiterte Genauigkeit von fast 16 Stellen eine höhere Genauigkeit für bestimmte Arten von Berechnungen.
Das obige ist der detaillierte Inhalt vonWarum zeigt die Arithmetik mit doppelter Genauigkeit manchmal eine Genauigkeit von mehr als 15 Dezimalstellen an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!