Forum: Compiler & IDEs Float in avr-gcc 3.3


von Dieter Brüggemann (Gast)


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

von Joerg Wunsch (Gast)


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);

von Dieter Brüggemann (Gast)


Lesenswert?

Danke für die schnelle Antwort.

Jetzt geht es. Schaue mir das mit den automatischen Typumwandlungen mal 
genauer an.

MFG
Dieter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.