Unverständliche Ausgabe



  • Schönen guten Tag,

    ich hätte eine Frage zu einem (Anfänger)-Programm:

    #include<stdio.h>
    #include<conio.h>

    int main(void)
    {
    double cm;
    double meter;

    printf("\nJetzt koennen Sie Zentimeter in Meter umrechnen. Geben Sie Zentimeter ein: ");
    scanf_s("%f", &cm);

    meter = cm / 100;

    printf("%f Zentimeter sind %f Meter", cm, meter);

    _getch();
    }

    Wenn ich am Anfang cm und meter mit einem double-Datentyp deklariere, erhalte ich als Ausgabe nur unverständliche Ziffern, wenn ich jedoch zu Beginn "double" durch "float" ersetzte ist die Ausgabe richtig.

    Viele Grüße

    Johannes



  • Du musst bei scanf auch den richtigen Formatspecifier für double einsetzen.

    Bei printf haben double und float allerdings denselben Specifier.



  • scanf_s ist kein Standard C... es ist irgendeine Erweiterung

    Für scanf und double möchtest du "%lf" benutzen.

    EDIT: 2s zu langsam 😞



  • Viele dank für die schnellen Antworten. Es funktioniert jetzt so wie ich mir das vorstelle.
    Auch wenn ich nicht verstehe was das "l" bei "%lf" für eine Funktion hat.^^

    Freundliche Grüße

    johannes



  • Ein float ist eine Gleitkommazahl mit einfacher Genauigkeit.
    Der double (wie der Name schon vermuten lässt) ist eine Gleitkommazahl mit doppelter Genauigkeit.

    Logischer Weise sind die beiden unterschiedlich groß. Daher gibt es (zumindest bei scanf ) die Unterscheidung zwischen "%f" für float und "%lf" für " long float " bzw double .


Log in to reply