warum keine gleitkommazahlen?
-
mein meine *.exe spuckt keine gleitkommazahlen aus, wenn ich statt "long" ein "float" nutze. woran kann es liegen? an meinem compiler DEV - C++ ?
danke#include<stdio.h>
#define PI 3.141592
long radius_in_meter, flaeche_in_qm;
int main(void)
{
printf("Eingabe Radius:");
scanf("%d", &radius_in_meter);flaeche_in_qm = PI/4*radius_in_meter*radius_in_meter;
printf("\nFlaeche hat %d qm.", flaeche_in_qm);
getch();
return 0;
}
-
1. PI/4 ist ne Integer-Division. int * float == int, deshalb ist der Typ von radius_in_meter in diesem Fall egal.
Also entweder (float)(PI/4) oder PI/4.f schreiben.
2. Warum fragst du im C++ Forum?
-
Und in diesem Falle %f statt %d verwenden
mfg
v R
-
Cocaine schrieb:
PI/4 ist ne Integer-Division. int * float == int, deshalb ist der Typ von radius_in_meter in diesem Fall egal.
bei mir nicht:
#define PI 3.1415 int main () { float f = PI/4; printf ("%f\n", f); ...
ergibt ausgabe: 0.785375
hätt ich auch so erwartet. c erweitert ja wenn's geht, damit nichts verlorengeht
-
Cocaine schrieb:
1. PI/4 ist ne Integer-Division. int * float == int
Quark. Das Ergebnis bekommt den Typ des größeren Typs (hier also float)
-
[quote="Cocaine"]1. PI/4 ist ne Integer-Division. int * float == int, deshalb ist der Typ von radius_in_meter in diesem Fall egal.
Also entweder (float)(PI/4) oder PI/4.f schreiben.
2. Warum fragst du im C++ Forum?[/quote]zu 2.-> wo sollte ich sonst fragen, ein reines "c-forum" habe ich noch nicht gefunden.
mit "float" statt "long" sowie "%f" statt"%d" funktioniert es. nun eine weitere frage dazu. worin liegt die ändereng, wenn man statt float double benutzen möchte?
vielen dank :p
-
robinvon schrieb:
worin liegt die ändereng, wenn man statt float double benutzen möchte?
double hat einen grösseren wertebereich. wird in 8 bytes gespeichert, float nur in 4. bei der ausgabe kannst du aber bei %f bleiben (gibt auch doubles aus)
-
zu 2.-> wo sollte ich sonst fragen, ein reines "c-forum" habe ich noch nicht gefunden.
Dann solltest du dich auf der Seite hier aber nochmal umschauen
mfg
v R
-
ich meinte bei der frage, wo der unterschied zwischen..., nicht die funktion float/double sondern die änderung im programm, wenn man statt float das double benutzt.
anders ausgedrückt, wenn ich das double benutze wird das ergebnis stets null.
danke