flaot in int umwandeln

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • flaot in int umwandeln

    Hi Leute,

    wieder da mit einem anscheinend leichten Problem, doch nach ELLENLANGER Suche und gegoogle werd ich nicht schlauer....
    Simples Problem: Eine Rechnung mit 2 float Variablen. Das Ergebnis wird daraufhin mithilfe von dem Befehl ceil() aufgerundet, und soll dann in eine Integer Variable abgespeichert werden.
    bloß schon beim Versuch der Zuweisung wird natürlich false ausgegeben.

    Frage nun also: Wie mache ich das?
    Hier ein Programmierausschnitt:

    Quellcode

    1. int main(int argc, char *argv[])
    2. {
    3. float b,r;
    4. int n1;
    5. ...
    6. n1 = ceil(b/r);
    7. ...
    8. }
  • Ja, ich weiß über Typecasting Bescheid, aber irgendwie lässt sich dies in C nicht umsetzen.
    Damit du weiß worum es geht, hier malö ein richtiger Quellcodeauszug:

    Quellcode

    1. int main(int argc, char *argv[])
    2. {
    3. //Deklaration der Variablen
    4. float a,b,r,t1,t2,p,g1,g2,v1,v2,n1,n2;
    5. //Abfrage der Startwerte mit Zuweisung in die Variablen
    6. printf("Geben sie die Laenge ein : ");
    7. scanf("%f",&a);
    8. printf("Geben sie die Breite ein: ");
    9. scanf("%f",&b);
    10. printf("Geben sie den Preis pro Quadradmeter ein : ");
    11. scanf("%f",&p);
    12. printf("Breite des Teppichs: ");
    13. scanf("%f",&r);
    14. //Formeln:
    15. //Berechnung der Bahnanzahl
    16. n1 = ceil(b/r);
    17. n2 = ceil(a/r);
    Alles anzeigen


    Allerdings soll das Ergebnis der Bahnenanzahl als eine Ganzzahl ausgegeben werden, und nicht als Kommatazahl. Es würde also auch reichen, die Nachkommatastelle bei der Ausgabe nicht anzeigen zu lassen.

    Aucgh nur bis zur 2. Kommatastelle anzeigen zu lassen würde ich brauchen.

    EDIT: hat sich erledigt. Ein blick im Manual auf float und schon gabs die antwort: %x.yf , wobei x = anzahl vor der komatastelle ist (0 = unbegrenzt) und y = nachkommatastelle (0 = kein Komma)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von AtroCty ()

  • Klar.

    Quellcode

    1. printf("\nAnzahl der Bahnen: %0.0f",n1);
    2. printf("\nErforderliche Laenge des gesamten Tepichbodens: %0.2f",t1);


    Dabei wird bei der Variable n1 eine ganze Zahl ausgegeben, da keine Kommatastelle erlaubt ist, und vor dem Komma UE viele Zahlen stehen können.
    Die Variable t1 kann auch UE viele Zahlen vor dem Komma darstellen, und bis auf die 2. Kommatastelle angezeigt.

    Wie genau castest du denn?
  • hab das mal in Code gepackt.

    Quellcode

    1. float a1,a2,a3;
    2. int n1;
    3. printf("Float 1: ");
    4. scanf("%f",&a1);
    5. printf("\nFloat 2: ");
    6. scanf("%f",&a2);
    7. a3 = a1 + a2;
    8. n1 = (int)(a1 + a2);
    9. printf("\nErgebnis Float: %f\n", a3);
    10. printf("Ergebnis Cast: %d\n", n1);
    Alles anzeigen


    Code ist denk ich selbsterklärend. Hoffe sind keine Fehler drin.

    Tschaui ^^
  • Du wechselt gelegentlich mit den Typen:

    Mal ist n1 und n2 einen int, mal ein float.

    Quellcode

    1. float b,r;
    2. int n1;
    3. ...
    4. //Deklaration der Variablen
    5. float a,b,r,t1,t2,p,g1,g2,v1,v2,n1,n2;

    Und bei den printf benutzt du es auch wieder wie ein float. Mach dir mal ein kopf wie es denn sein muss und schreibs nochmal auf. Und sag bitte dazu was der Compiler an Fehlern auswirft, das hilft ungemein.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]