Double Nachkommastellen



  • Hallo zusammen,

    wie ich festgestellt habe, werden die Nullen am Ende der Nachkommastellen von Double-Variablen bei C++ abgeschnitten.
    Beispiel: Statt 3.50 wird 3.5 ausgegeben.
    Gibt es irgendeine möglichkeit, dass die Nullen mitgespeichert werden, wenn die Nachkommastellen auf Null enden? Ich weiss, dass es rechnerisch keinen Unterschied macht, aber für die Ausgabe wäre es mir wichtig.

    Danke im voraus für die Hilfe.



  • Intern wird da gar nichts abgeschnitten, zumal double-Werte in einem ganz anderen Format gespeichert werden. Aber für die Ausgabe kannst du mal mit der precision des Ausgabestreams experimentieren:

    double v=3.5;
    cout<<v<<endl;
    cout<<fixed<<setprecision(2)<<v<<endl;
    


  • Komisch, sonst gibt es immer Leute, die die Nullen weghaben wollen (z.B. bei (s)printf()). 😉



  • wxSkip schrieb:

    Komisch, sonst gibt es immer Leute, die die Nullen weghaben wollen (z.B. bei (s)printf()). 😉

    das sind ja auch die veralteten C'ler...



  • Newbie001 schrieb:

    wie ich festgestellt habe, werden die Nullen am Ende der Nachkommastellen von Double-Variablen bei C++ abgeschnitten.

    Double-Variablen speichern keine Zeichenketten. Sie speichern Zahlen. Genauer genommen eine Untermenge der rationalen Zahlen. Der Unterschied: "3.50" und "3.5" sind verschiedene Zeichenketten. Sie repräsentieren aber dieselbe Zahl.

    Du darfst auch das Konvertieren nicht unter den Tisch fallen lassen. Zeichenketten können zu Floatingpoint-Zahlen konvertiert werden und wieder zurück. Den Rückweg kann man in gewisser Hinsicht kontrollieren (zB auf wieviele Nachkommastellen gerundet werden soll zB).

    Schreibst Du im Quellcode 3.50 hin, wird der Compiler diese Zeichenkette irgendwie konvertieren und einen double-Wert dafür einsetzen, der der Zahl 3.5 sehr nahe kommt. Exakt geht das nämlih nicht immer. Die Zahl 0.2 zum Beispiel lässt sich nicht mit endlich vielen Binärstellen darstellen.

    Also, zum Schlau werden folgende Themen recherchieren:
    - Dualsystem
    - Floatingpoint


Log in to reply