Ich schreibe ein Programm, das Fließkomma-Literale druckt, die in einem anderen Programm verwendet werden sollen.float drucken, Präzision erhalten
Wie viele Ziffern muss ich drucken, um die Genauigkeit des ursprünglichen Schwimmers zu erhalten?
Da ein float 24 * (log(2)/log(10)) = 7.2247199
Dezimalstellen der Genauigkeit hat, war mein erster Gedanke, dass Drucken von 8 Ziffern sollte ausreichen. Aber wenn ich Pech habe, werden diese 0.2247199
nach links und rechts von den 7 signifikanten Stellen verteilt, also sollte ich wahrscheinlich 9 Dezimalziffern drucken.
Ist meine Analyse korrekt? Sind 9 Dezimalziffern für alle Fälle ausreichend? Wie printf("%.9g", x);
?
Gibt es eine Standardfunktion, die einen Float in einen String mit der für diesen Wert erforderlichen Mindestanzahl von Dezimalstellen umwandelt, wenn 7 oder 8 ausreichen, damit keine unnötigen Ziffern gedruckt werden?
Hinweis: Ich kann keine hexadezimalen Fließkomma-Literale verwenden, da Standard C++ sie nicht unterstützt.
Verwenden 1000 Stellen und befestigen Sie die hinteren Nullen keine solche Standard-Bibliothek ist! ;) –
wie Sie nicht einen binären basierte Schwimmer Dezimalbruch ohne einen Fehler umwandeln können, würde ich vorschlagen, nur die binäre Darstellung Dumping (oder eine Mantisse + Exponenten getrennt). – Vlad
@Vlad können Sie nicht? Sind nicht alle binären Brüche als endliche Dezimalzahl darstellbar? –