Frage

Es ist eine Codierung der Praxis. Ich lese diese Zahlen als double aus einer Datei:
112233 445566
8717829120000 2.4
16000000 1307674.368
10000 2092278988,8
1234567 890123
Nach einiger Berechnung, sollte ich Ausgabe einige von ihnen. Ich will sie nur die gleiche wie in der Datei, keine Füllung Nullen erscheinen lassen, keine wissenschaftliche Notation, wie könnte ich es erreichen? Muss ich sie lesen in als Zeichenfolge dann konvertieren?

Edit:? Erm ... Haben Sie Jungs bedeuten, dass es eigentlich keine Möglichkeit für das Programm ist zu wissen, wie die Zahlen wie ursprünglich aussehen

War es hilfreich?

Lösung

Wenn Sie die Ausgabe identisch zu sein mit dem Eingang wollen, dann ja, müssen Sie sie in als Strings und speichern Sie die Saiten lesen Ausgabe später sein.

Warum? Wenn mit Gleitkommazahlen handelt, kann der Computer nicht die meisten dezimale Bruchteile genau in binär darstellen. So in einer Reihe wie 2.4, wird die interne Darstellung nicht exakt 2,4 sein, es wird etwas anders sein. Die meiste Zeit, die C / C ++ I / O-Bibliotheken nehmen eine solche binäre Zahl und drucken 2.4, aber für einige Zahlen, könnte es so etwas wie 2,40000000001 oder 2,399999999 drucken.

Also, das ist, warum Sie die Original-Zeichenketten um behalten wollen.

Andere Tipps

Es gibt keine eingebaute Möglichkeit, dies zu tun. Ja, werden Sie die ursprüngliche Darstellung halten müssen, und einige Verbindung zwischen dieser Darstellung und der analysierten Nummer (ein map<string, double> zum Beispiel).

Wenn Sie die ursprünglichen Zahlen ausgeben müssen, wie sie waren, könnten Sie besser dran, die Original-Zeichenketten irgendwo zu speichern sein. Während der Dezimal -> Binär -> Dezimalumwandlung können einige Genauigkeit verloren gehen, wegen der Genauigkeitsgrenzen der Doppel. Sie sind möglicherweise nicht exakt die gleichen Dezimalzahlen am Ende gedruckt wird.

Sie lesen sie als Strings, Rekord all die vielen finnicky Aspekte (tun sie dezimal Teile haben, wie lange, alle padding Nullen, etc, etc) und erinnere mich an all jene Aspekte für jedes Feld, wandeln sie in Zahlen, wenn Sie unbedingt , dann all die verrückten kleinen Aspekt Sie gespeichert verwenden, wenn die Zahlen für die Ausgabe der Formatierung wieder. Verrückt, aber der einzige Weg zu erreichen wahrsten Sinne des Wortes, was Sie fordern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top