PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rechenoperationen in C



KRibel
06-01-2006, 15:54
Hallo,

habe folgendes geschrieben:


int z;
z=100^(1/2);
printf ("z=%d", z);


was stimmt nicht?
Wieso bekomme ich z=100 heraus?

Wieso kann ich die Zahl
109786543210987.654321098765432109
nicht als double speichern, bzw. sie wird mir später nich ganz angezeigt?

Andere Frage:

Wieso wird das nicht berechnet?


float z;
z=1/7;
printf ("z=%f", z);


Hier bekomme ich z=0.00000 heraus.
Wieso das?


Gruß

Konstantin

Caveman
06-01-2006, 16:05
Das Ergebnis von z ist in Wirklichkeit ein Integer-Wert, da Du eine Intiger-Zahl (1) durch eine weitere Integerzahl (7) teilst. Dies ergibt dann 0 und somit ist auch z als float-Zahl 0, da die Nachkommastellen fehlen.

Versuchs mal mit 1.0 und 7.0 . Dann funktioniert's.


Edit:
Hier ein kleines C++ Programm:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
double z;

z = pow(100.0, 0.5);
//z = 1/7.0; //fuer zweites Problem
printf ("z=%f\n", z);

return 0;
}

für C einfach statt <cmath>, <math.h> benutzen

Joghurt
06-01-2006, 16:59
Übrigens: Zum Wurzelziehen besser gleich sqrt anstatt pow benutzen.

BTW: Du musst die Mathebib mit einlinken (gcc Programm -lm)