Dezimalzahlen in C



  • Hi Leute,
    ich arbeite zurzeit an einem Rechner(bin ein Anfänger) und habe ihn soweit das er +-*/ rechnen kann(mit int). Nun wollte ich das er auch Kommazahlen animmt.
    z.B. 5,8 oder 9,1 ... ich habe versucht dies mit float zu machen. Mein Problem :

    Wnn ich in der Konsole 3,7 und 5,5 eingabe (was er zusammenrechnen sollte) rechnet er :

    3,000000+5,000000=7,000000
    ...

    und wenn ich dass ' , ' durch einen Punkt (' . ') ersetze ann hilft das auch nicht viel.

    char a1[MaxL];
            char a2[MaxL];
            float A1,A2;
            fflush(stdin);
            printf("Sie habe Addieren/subtrahieren ausgewählt.\n");
            printf("Geben sie bitte die erste Zahl ein:\n\n");
            printf("\n");
            fgets(a1,MaxL,stdin);
            printf("Geben sie bitte die zweite Zahl ein:\n\n");
            printf("\n");
            fgets(a2,MaxL,stdin);
            A1=atoi(a1);
            A2=atoi(a2);
            printf("Hier sind die Ergebnisse:\n\n");
            printf("%f+%f=%f\n",A1,A2,A1+A2);
            printf("%f-%f=%f\n\n",A1,A2,A1-A2);
            printf("Druecken sie bitte 'ENTER' um das Programm zu beenden\n\n ");
    

    Danke für eure Antworten im Voraus!



  • atoi = Ascii to Int. Hilft dir das?



  • Wie soll ich das jetzt eintragen?
    so?:
    [cpp]
    char a1[MaxL];
    char a2[MaxL];
    float A1,A2;
    fflush(stdin);

    atoi = AscII to Int; // so?

    printf("Sie habe Addieren/subtrahieren ausgewählt.\n");
    printf("Geben sie bitte die erste Zahl ein:\n\n");
    printf("\n");
    fgets(a1,MaxL,stdin);
    printf("Geben sie bitte die zweite Zahl ein:\n\n");
    printf("\n");
    fgets(a2,MaxL,stdin);
    A1=atoi(a1);
    A2=atoi(a2);
    printf("Hier sind die Ergebnisse:\n\n");
    printf("%f+%f=%f\n",A1,A2,A1+A2);
    printf("%f-%f=%f\n\n",A1,A2,A1-A2);
    printf("Druecken sie bitte 'ENTER' um das Programm zu beenden\n\n ");



  • pyhax schrieb:

    atoi = Ascii to Int. Hilft dir das?

    Es wird ihm helfen. Wenn er dann noch mirbekommt, daß atof() Kommazahlen
    eher als Punktzahlen mag, kommt er auch weiter 😉

    pyhax meinte vermutlich: atoi() = Eine Funktion, die einen String in eine int wandelt.



  • @Scheppertreiber

    Wie meinst du das?
    Ich brauche kein INT sondern FLOAT(glaube ich). 😃

    ich meine eine unktion wo ich Input und Output von Komazahlen machen kann



  • Ok, nehmen wir mal an Du hast eine Zahl mit DezimalPUNKT eingelesen, zB:

    zahl = "12.345";

    Dann wird dieser String mit atof() in das interne Zahlenformat float bzw double
    umgewandelt. Die Funktion atoi() würde das in eine int (ganzzahliger Wer)
    umwandeln, macht also dann 12.

    Probiers mal aus:

    zahl = "12.345";
    printf( "\nZahl double %lf", atof( zahl));
    printf( "\nZahl int %lf", atoi( zahl));

    und schau mal was herauskommt.



  • DANKEEEE!!!
    Vielen Dank @Scheppertreiber und @Pyhax
    /close


Anmelden zum Antworten