Heim >Backend-Entwicklung >C++ >Warum scheint Double Precision mehr Dezimalstellen zu haben als die angekündigten 15?
In der Computerprogrammierung wird häufig davon ausgegangen, dass der Datentyp mit doppelter Genauigkeit eine ungefähre Genauigkeit von 15 Dezimalstellen hat. Bestimmte Zahlendarstellungen wie 1,0/7,0 scheinen jedoch präziser zu sein, wenn sie intern innerhalb der Variablen dargestellt werden. In diesem Artikel wird untersucht, warum dies geschieht und warum die Genauigkeit oft mit etwa 15 Dezimalstellen angegeben wird.
Ein IEEE-Double hat 53 signifikante Bits, was ungefähr 15,95 Dezimalstellen entspricht. Um Rundungen zu berücksichtigen, setzt die Implementierung die Genauigkeit (DBL_DIG) auf 15. Dies bietet fast eine zusätzliche Dezimalstelle an Genauigkeit, die über das hinausgeht, was durch DBL_DIG impliziert wird.
Bei der Anzeige eines Doubles Compiler runden den Wert normalerweise basierend auf der Genauigkeit. Beispielsweise hat 1,0/7,0, wenn es mit „%.17g“ angezeigt wird, eine Genauigkeit von 17 Stellen. Wenn jedoch „%.64g“ verwendet wird, erscheinen keine signifikanten Ziffern über die erwartete 15-stellige Genauigkeit hinaus.
Zahlen mit doppelter Genauigkeit haben eine interne Darstellung, die etwa 15,95 Dezimalstellen zulässt der Präzision. Aufgrund der Rundung beträgt die angezeigte Genauigkeit jedoch typischerweise 15 Dezimalstellen. Diese Erklärung hilft zu klären, warum bestimmte exakte Zahlen, wie 1,0/7,0, intern scheinbar präziser sind, bei der Anzeige jedoch immer noch der geschätzten 15-stelligen Genauigkeit entsprechen.
Das obige ist der detaillierte Inhalt vonWarum scheint Double Precision mehr Dezimalstellen zu haben als die angekündigten 15?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!