So speichern Sie Double mit maximaler Präzision

8

Ich bin ein wenig daran interessiert, die Nummer mit der maximal verfügbaren Genauigkeit zu speichern:

%Vor%

Ich versuche, es auf dem Bildschirm zu drucken:

%Vor%

Und das ist es, was ich habe:

  

569.2323068268890400000000000000000000000000000000000000

Ist das die maximale Präzision, die ich erreichen kann?


P.S. Ich verwende Visual Studio 2008

    
tema 31.03.2015, 15:24
quelle

2 Antworten

14

Ein Double wird normalerweise im Format IEEE 754 binary64 gespeichert.

Ein binary64 hat 52 Bits der Genauigkeit, nicht 52 Dezimalziffern - dies entspricht maximal 17 Dezimalziffern, was Sie anzeigen.

  

Ist das die maximale Präzision, die ich erreichen kann?

Einige Plattformen können einen long double bereitstellen, der tatsächlich größer ist als ein double , aber deins scheint das nicht.

Wenn Sie mehr Präzision wünschen, können Sie entweder eine Bibliothek verwenden, die einen größeren / präziseren Typ unterstützt, der von Ihrer Hardware unterstützt wird (z. B. die 80-Bit-Erweiterung double), oder eine Bibliothek mit beliebiger Genauigkeit, die in Software funktioniert / p>     

Useless 31.03.2015, 15:28
quelle
6

Das ist die Genauigkeit des Typs double in Ihrer C-Implementierung. Conformant C-Implementierungen haben auch den Typ long double , der kann größere Genauigkeit bieten.

Wenn Sie eine höhere Genauigkeit benötigen, dann gibt es numerische Bibliotheken, die numerische Typen und Funktionen mit beliebiger Genauigkeit für die Bearbeitung bereitstellen. Die GNU Multiple Precision Arithmetic Library ist eine solche; Es funktioniert auf vielen Plattformen, einschließlich der für Sie relevanten - Win32 und Win64.

    
John Bollinger 31.03.2015 15:41
quelle

Tags und Links