Testen ob Zahl Ganz (ohne kommastelle)
-
Wie kann ich sowetwas machen?
Testen, ob eine Zahl keine Kommestelle hat?
-
im Prinzip ist
if(zahl==(int)zahl)
der Trick.
Kann sein, daß zahl==floor(zahl) schneller ist.
-
Hm, ich würde das ganz naiv probieren mit: if(zahl==(int)zahl)
Falls das nicht geht, würde ich das probieren: if(zahl==floor(zahl)).
-
Konkret.
Ich habe eine Abfrage.
do { printf("Bitte einen Zahl von 20 bis 90 mm eingeben: "); scanf("%i", &d); } while(d < 20 || d > 90);
Leider ist das hier so, dass er auch ungerade nimmt und abrundet. was könnte man machen? es klappt leider nicht, wie oben angegeben.
Wenn man z.B. eine 2.5 eingibt, dann läuft der entlos lange und zeut immer an bitte eine Zahl .. eingeben. Das hört nicht auf. Was könnte man da tuen?
-
Hä? Du liest doch eh einen Integer ein. Also liest du 2 ein. Und 2 (und natürlich auch 2.5) ist halt kleiner als 20. Wieso sollte da die Schleife aufhören?
-
^^lies doch einen float ein, oder mach's mit fgets und danach atoi bzw. atof. oder frag den rückgabewert von 'scanf' ab (der müsste 1 sein, wenns geklappt hat).
-
Das mit dem float einlesen klappt jetzt. aber wie bekomme ich das hin, dass der die schleife weiterlaufen lässt, wenn die zahl eine kommastelle hat?
-
chb89 schrieb:
aber wie bekomme ich das hin, dass der die schleife weiterlaufen lässt, wenn die zahl eine kommastelle hat?
vielleicht mit: while(d < 20 || d > 90 || d != floor(d)); ? (siehe die ersten beiden antworten)
-
floor erkennt der nicht als befehl. auch nicht mit #include <math.h>
-
es geht doch! Keine Ahnung, warum es gestern nicht ging. DANKE!
Ihr seit die Besten:)