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


Anmelden zum Antworten