warum keine gleitkommazahlen?



  • mein meine *.exe spuckt keine gleitkommazahlen aus, wenn ich statt "long" ein "float" nutze. woran kann es liegen? an meinem compiler DEV - C++ ?
    danke 😃

    #include<stdio.h>

    #define PI 3.141592

    long radius_in_meter, flaeche_in_qm;

    int main(void)
    {
    printf("Eingabe Radius:");
    scanf("%d", &radius_in_meter);

    flaeche_in_qm = PI/4*radius_in_meter*radius_in_meter;

    printf("\nFlaeche hat %d qm.", flaeche_in_qm);
    getch();
    return 0;
    }



  • 1. PI/4 ist ne Integer-Division. int * float == int, deshalb ist der Typ von radius_in_meter in diesem Fall egal.
    Also entweder (float)(PI/4) oder PI/4.f schreiben.
    2. Warum fragst du im C++ Forum?



  • Und in diesem Falle %f statt %d verwenden

    mfg
    v R



  • Cocaine schrieb:

    PI/4 ist ne Integer-Division. int * float == int, deshalb ist der Typ von radius_in_meter in diesem Fall egal.

    bei mir nicht:

    #define PI 3.1415
    int main ()
    {
        float f = PI/4;
        printf ("%f\n", f);
    ...
    

    ergibt ausgabe: 0.785375
    hätt ich auch so erwartet. c erweitert ja wenn's geht, damit nichts verlorengeht



  • Cocaine schrieb:

    1. PI/4 ist ne Integer-Division. int * float == int

    Quark. Das Ergebnis bekommt den Typ des größeren Typs (hier also float)



  • [quote="Cocaine"]1. PI/4 ist ne Integer-Division. int * float == int, deshalb ist der Typ von radius_in_meter in diesem Fall egal.
    Also entweder (float)(PI/4) oder PI/4.f schreiben.
    2. Warum fragst du im C++ Forum?[/quote]

    zu 2.-> wo sollte ich sonst fragen, ein reines "c-forum" habe ich noch nicht gefunden.
    mit "float" statt "long" sowie "%f" statt"%d" funktioniert es. nun eine weitere frage dazu. worin liegt die ändereng, wenn man statt float double benutzen möchte?
    vielen dank :p



  • robinvon schrieb:

    worin liegt die ändereng, wenn man statt float double benutzen möchte?

    double hat einen grösseren wertebereich. wird in 8 bytes gespeichert, float nur in 4. bei der ausgabe kannst du aber bei %f bleiben (gibt auch doubles aus)



  • zu 2.-> wo sollte ich sonst fragen, ein reines "c-forum" habe ich noch nicht gefunden.

    Dann solltest du dich auf der Seite hier aber nochmal umschauen 😉

    mfg
    v R



  • ich meinte bei der frage, wo der unterschied zwischen..., nicht die funktion float/double sondern die änderung im programm, wenn man statt float das double benutzt.
    anders ausgedrückt, wenn ich das double benutze wird das ergebnis stets null.
    danke


Anmelden zum Antworten