double-Ausgabe: Bis zu 5 Stellen hinter dem Komma
-
Hallo,
kennt jemand eine Lösung, wie man bis zu 5 Stellen hinter dem Komma double-Werte ausgeben kann? %.5lf gibt ja konstant 5 Stellen hinter dem Komma aus.Danke im Voraus
L. G.
Steffo
-
Vorschlag: nehme statt printf die streams von C++ und deren Operatoren mit cout << setw(12) << setprecision(5) << doubleValue << endl;
Auch wenn du sonst bei C bleiben willst, hast du damit alles bestens im Griff. Das war bei der Einführung von C++ das erste, was alten C-Programmierern sofort gefallen hatte.
-
C und C++ zu mischen... Das mag ja ok sein, wenn man C++ als Hauptsprache nimmt, aber umgekehrt scheint mir das nicht sinnvoll zu sein, zumal ich keine freie Wahl bei der Sprache habe.
Aber dennoch danke, für die Antwort.L. G.
Steffo
-
Doch das geht in beide Richtungen, wenn man nicht gerade einen sehr eingeschränkten Compiler mit nur C einsetzt. Ist aber nichts für OOP-Puristen.
-
Womöglich kann man da mit %.*g etwas drehen. %.5g gäbe bis zu fünf signifikante Stellen aus, und mit log10 sollte sich ausrechnen lassen, wie viele Vorkommastellen die Zahl hat. Ich denke mir das etwa so:
#include <stdio.h> #include <math.h> int main(void) { double d = 3.1415926; int i; for(i = 0; i < 3; ++i) { printf("%.*g\n", (int) ceil(log10(d)) + 5, d); d *= 10; } return 0; }
Wenn d kleiner ist als 1e-4, wechselt das allerdings in die wissenschaftliche Notation. Das könnte man natürlich vorher abfangen.
-
%.5g ist genau das, was ich gesucht habe. Danke!
L. G.
Steffo