2014-01-13 5 views
7

Ich vergleiche die Ausgabe von zwei Programmen, ein C das andere C++, mit diff, so dass die Ausgabe identisch sein muss.Kann ich printf Format schwimmt wie C++ - Streams

Gibt es einen Weg zu printf ein Doppel, so dass es formatiert ist, als ob es mit << mydouble gedruckt wurde.

ich derzeit printf("%g",mydouble) bin mit

Hier sind einige Beispiele für die Unterschiede:

c: 3.24769e-05 c++: 3.2477e-05 
c: 0.0026572 c++: 0.00265721 

Interessanterweise ist die wissenschaftliche Schreibweise mehr Ziffern in c hat, und die Dezimalschreibweise mehr in C++ hat.

+0

Mit 'printf' in der C++ liefert könnte einfacher sein. – woolstar

+2

Welchen Teil von [dem Handbuch] (http://www.cplusplus.com/reference/cstdio/printf/) haben Sie eine Frage? –

Antwort

3

Sie können dieses Problem lösen, indem Sie die Formatbezeich in C unter Verwendung von

Zum Beispiel, sagen Sie nur 3 Stellen nach dem Komma drucken möchten, können Sie Ihre printf wie so machen könnten:

printf("%.3lf", dub); 

mit einem Wert von double dub = .0137; würde die Ausgabe 0.014

sein Dies würde das Problem mit Ihrem zweiten Fall beheben, wenn Sie mehr Präzision gedruckt wollen könnten Sie schreiben:

printf("%.8lf", dub); 

Ihr Ausgang für double dub = 0.00265721; dann 0.00265721

Der Fall für% g würde die gleiche Art und Weise mit Ausnahme der Nummer auf der linken Seite arbeitet in der Berechnung einbezogen wird. Wenn Sie die C++ Version (die geringere Präzision Ich gehe davon aus), dann der Code würde wie folgt aussehen wollte:

double dub = .0000324769; 
printf("%.5g", dub); 

Welche 3.2477e-05

+0

Auf meinem System macht die Änderung von '% g' zu'% .5g' bei bestimmten Werten die Ausgabe dezimal statt wissenschaftlich. – jsj

+0

oh okay .4 ist was ich brauchte - duh – jsj