Einstellen der Ausgaben von float Werten
-
Hallo,
ich habe ein Java und ein C++ Programm, ich muss Werte vergleichen die
diese beiden Programme berechnen Java schreibt die Werte(double) so in die Datei:
-2.6332525426808948E-11C++ so:
-2.63325e-011 (C++)Ich bräuchte ein gleiche Ausgabe das es sehr viele Werte sind und
ich sie mit einm Tool wie diff vergleichen will. Ist es in C++ möglich
auch ein grpßes "E" zu bekommen und die gleichen Anzahl an Nachkommastellen?mfg
-
google mal nach "c++ stream manipulator", das dürfte das sein was du suchst.
Siehe auch hier: http://www.cplusplus.com/reference/iostream/manipulators/
-
Ev. hilft auch eine der beiden Libraries:
FastFormat http://www.fastformat.org/
Boost::Format http://www.boost.org/doc/libs/1_39_0/libs/format/index.htmlSimon
-
Danke, ich werde mir die Sachen mal angucken.
-
Bei der Ausgabe von Zahlen auf einen ostream (z.B. cout) kann man mit dem Manipulator 'scientific' auf das wissenschaftliche Darstellung umschalten, mit 'setprecision' lässt sich dann die Anzahl der Nachkommastellen einstellen und mit 'uppercase' aus dem kleinen 'e' ein großes 'E' machen.
Beispiel:
cout << scientific << setprecision(10) << uppercase; // setprecision erfordert #include <iomanip> double d = -2.6332525426808948E-11; cout << d << endl;
Bleiben noch zwei Probleme:
1. die Anzahl der Stellen im Exponenten ist hier immer 3 und nicht 2, wie in Deinem Beispiel
2. double ist auf 32Bit-Rechnern nur auf 14 Stellen genau; also hier wäre dann bei 13 Nachkommastellen Schluss.Lässt sich das Format unter Java ändern?
Sonst bliebe als Alternative, dass man mit einem C++-Programm den Java-Output liest und anschließend vergleicht, dass sollte ohne weiteres gehen.
Gruß
Werner