Double Wert Einlesen? (gelöst)



  • Hallo Zusammen,
    ich bin derzeit dabei C zu lernen bzw. eigentlich bin ich schon ziemlich fit in c++ bin aber durch mein Studium dazu gezwungen erstmal auf C umzusatteln. An sich ist das auch kein Problem allerdings macht mir die Syntax in C doch etwas zu schaffen bzw die Formalien. Ich stehe jetzt vor der Aufgabe einen Taschen rechner der Addieren Subtrahieren mulitplizieren und Dividieren können soll. An sich kein Problem allerdings kann ich ums Verrecken keinen gescheiten werte einlesen (Hab das in C++ gegengechekt da gehts ohne Probleme). Wenn ich einen Double Wert einlesen möchte ist dieser Wert immer = 0. Die Eingabe wird einfach nicht richtig gespeichert. Hab das auch bereits unter 2 Systemen getestet mit dem selben Ergebnis. Kann mir irgendjemand weiter helfen ?
    Mit freundlichen Grüßen
    Sven

           double eingabe_a;
    	printf("Geben sie die erste Zahl ein: \n");
    	scanf("%f", &eingabe_a);                   // Eingabe
    	printf("a = %f", eingabe_a);          // Ausgabe = 0.00000 oder eine komische Zahl e^3123421 bspw.
    	
    


  • Schon mal Google versucht?

    %lf springt einen da an.



  • Beachte genau die Parameter bei scanf und printf - jeder Datentyp hat eigene Parameter (und teilweise unterscheiden sich diese zwischen beiden Funktionen).

    %f bei scanf ist für float - %lf für double.
    Bei printf gilt aber %f für double, genauso wie für float (da findet dann eine "promotion" auf double statt).



  • @manni66
    auf %lf bin ich auch schon gekommen hat aber an der Ausgabe leider nichts verändert.
    Was ich ziemlich Witzlos finde ist, dass wenn ich float nehme statt double alles funktioniert wie es soll aber ich finde einfach keine Antwort auf das Double Problem🤔
    Villeicht ist auch einfach Dev c++ grade etwas broken.



  • @SirRust
    schalte mal alle Warnungen vom Compiler an.
    Der erkennt das %lf Problem und gibt dann eine Warnung aus..

    welche Dev C++ Version nutzt du?



  • double eingabe_a;
    	printf("Geben sie die erste Zahl ein: \n");
    	scanf("%lf", &eingabe_a);                   // Eingabe
    	printf("a = %f", eingabe_a);
    

    Funktioniert auf jedem System, auch bei dir.
    Im Übrigen liefert scanf einen Returnwert, den du in diesem wie auch in allen anderen Fällen mit Nutzereingaben zur Überprüfung von Fehleingaben benutzen kannst. Das alles steht in der Doku zu (f)scanf, die man immer zuerst lesen sollte, bevor man wild draufloshackt und irgendwelche Annahmen trifft (hab ich immer so gemacht.., hab ich im Netz gelesen..., hab ich bei Pfuscher JW gelesen..., funktioniert in C++..., funktioniert unter Windows/Unix..., hat mein Professor mir so gezeigt...,...)



  • @DirkB
    Ich nutze Dev C++ Ver. 5.11.
    Das Problem hat sich allerdings nach der Neuinstallation von Dev C++ erledigt. Irgendwo hat sich das Programm zerschossen. Jetzt geht wieder alles so wie es soll.