Float in avr-gcc 3.3

Gast #39591
Lesenswert?

Hallo

Fange gerade mit C an und habe eine Frage.

Wieso geht diese Formel nicht.
Will die Steigung einer Gerade berechnen, zum zeichnen auf einem LCD 
Display. Komme aber mit dieser Formel nicht weiter, da sie nicht die 
Ergebnisse liefert, die ich möchte.

Das Ergebnis der Berechnung ist doch 0.6. Aber die Abfrage mit IF auf > 
0.5 geht nicht. Müsste doch y++ machen, oder liege ich da so falsch.


unsigned char x= 3, y = 2 ,x1 = 8,y1 = 5;
float steigung;          //geht doch damit ?????
steigung = (y1 - y) / ( x1 - x); //steigung = 0.6
if ( steigung > 0.5)
    {y++;}

MFG
Dieter
Gast #39592
Lesenswert?

Nun, Du solltest Dir vor der Benutzung von C zumindest die
Grundlagen der Sprache aneignen.

Dein Ausdruck wird vom Typ »int« berechnet (auch nicht vom Typ
»unsigned char«, wie man auf den ersten Blick annehmen könnte).
Damit ist das Ergebnis dann immer 0.

Du mußt mindestens eine Seite zuvor auf »float« zwingen, oder
besser gleich beide:

steigung = (float)(y1 - y) / (float)(x1 - x);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren