Double Zahl



  • Hi, vielleicht wisst ihr es: Ich habe eine Funktion geschrieben, an die eine double-Zahl übergeben wird. Diese soll nun den ganzzahligen Teil sowie die Zahl, die aus den ersten 4 Ziffern des nachkommateils besteht, zurückgeben! Wie kann ich sowas realisieren? Muss ich einfach geschickt Multiplizieren bzw. die die Nachkommtateile abschneiden? wie geht das?

    #include <stdio.h> 
    #include <math.h> 
    #include <conio.h>  
    
    double zahl; 
    
    void function_ziffer(double zahl) 
    { 
    // Ja hier muss die Selektion rein
    } 
    
    main(void) 
    { 
    printf("Geben Sie eine Double-Zahl ein: "); 
    scanf("%le",&zahl); 
    function_ziffer(zahl); 
    getch(); 
    return 0; 
    
    }
    


  • floor() für Zahl vor dem Komma.

    Ergebnis von floor() von Originalzahl abziehen.

    Ergebnis mit 10000.0 multipizieren und floor() nochmal anwenden.



  • das geht irgendwie nicht recht, da kommt immer solche lange zahl raus mit vielen 0en und nen e!? muss ich ja noch ne formatierung wie 2.0 oder so schreiben?



  • wovon redest du?



  • von floor() ich weiß nicht wie man das anwendet =((





  • Ich weiß jetzt echt nicht wie ich mir den ganzahligen Teil meiner Double Zahl ausgeben kann und die ersten 4 nackkommastellen??? hab jetzt das hier

    #include <stdio.h>
    #include <conio.h>
    #include <math.h> 
    
    double Round(double Zahl, unsigned int Stellen) 
    { 
        Zahl *= pow(10, Stellen); 
        if (Zahl >= 0) 
            floor(Zahl + 0.5); 
        else 
            ceil(Zahl - 0.5); 
        Zahl /= pow(10, Stellen); 
        return Zahl; 
    } 
    
    int main(void)
    {
    double Zahl,rueck;
    printf("Geben Sie eine Double-Zahl ein: "); 
    scanf("%le",&Zahl); 
    Round(Zahl);
    printf("%le2.0",Zahl); 
    getch(); 
    return 0; 
    
    }
    

    Aber das macht auch nicht was es soll! 😞



  • double misthaufen = 2.7182818;
    int a, b;

    printf("%.4f", misthaufen);

    a = (int)floor(misthaufen);
    b = (int)((misthaufen - a) * 10000);
    printf("%d.%04d", a, b);



  • danke klappt wunderbar 👍



  • Bei negativen Zahlen klappt das dann nichtmehr.
    Muss man halt überprüfen und entsprechend umbauen.



  • Inwiefern könnte ich das umbauen?



  • vorzeichen erkennen, positiv machen und dann vorzeichen einfach bei der ausgabe davorklatschen.



  • ich habs jetzt so:
    gibt aber noch ein problem! wenn ich nur 0 hab wird 0 nur statt 4 stellen ausgegeben! ist das ok? weil 0 ist ja null! da brauch ich doch nicht 0 und 0000!? und wenn ich sowas wie 22,0231 hab ist wegen der 0 auch nur in der ausgabe die 2310! ist irgendiwe doof, hat jemand nen Plan?

    #include <stdio.h>
    #include <conio.h>
    #include <math.h> 
    
    double zur_berechnung(double zahl)
    { 
    
    int a;
    double b;
    
    if (zahl > 0) {
    
    a = (int)floor(zahl); 
    b = (int)((zahl - a) * 10000);  
    printf("ganzzahliger Teil: %d\nerste 4 Ziffern des Nachkommateils: %4.0f", a, b);
    }
    
    else {
    a = (int)trunc(zahl); 
    b =  (zahl - a)  * (-10000);  
    printf("ganzzahliger Teil: %d\nerste 4 Ziffern des Nachkommateils: %4.0f", a, b);
    }
    
    }
    
    int main(void)
    {
    double zahl;
    printf("Geben Sie eine Double-Zahl ein: "); 
    scanf("%le",&zahl); 
    printf("\n");
    zur_berechnung(zahl);
    getch(); 
    return 0; 
    }
    


  • ich versteh nicht mal was dein satz aussagen sollte...



  • Na wenn ich als Double zahl einlese: 22,023232 zum beispiel, dann hätte ich 22 als ganze zahl ohne nachkommastelle das stimmt. und dann aber nicht 0232 als nachkommastelle sondern nur 232!



  • nullen sind so wichtig wie jede andere ziffer.
    du musst also 0232 ausgeben, sonst hast du effektiv eine ganz andere zahl angezeigt.


Log in to reply