Forum: Mikrocontroller und Digitale Elektronik Berechnung mit float Datentyp


von KiriKiri (Gast)


Lesenswert?

Hi zusammen,

ich habe an einem Atmega8 ein 2x16 LC Display angeschlossen und kann es 
beschreiben, habe einen Wert (int) mit einem ADC generiert und auch 
dargestellt. Rechenoperationen mit int stellt mein Display auch dar.
Dann hatte ich bei dem Datentyp float das Problem das immer ein ? statt 
dess Wertes angezeigt wurde, dank der Page hier habe ich im AVR Studio 
die Floating Points aktiviert, klappt wunderbar. Ich kann nun ein float 
darstellen wenn ich einer Variablen einen Wert wie z.B. pi zuweise,...

y=3.141592

und dann y ausgebe mit....

sprintf(var1, "%f", y);
set_cursor(0, 1);lcd_string(var1);

spuckt er auf dem Display auch 3.141592 aus, aber wenn ich eine 
Rechenoperation durchführe wie z.B.....

y=5/10

und dann y ausgeben will bekomme ich ständig 0.000000 angezeigt?

Habe math.h & float.h included!

Habt ihr Rat?
Gruß KiriKiri

von Uwe (Gast)


Lesenswert?

Schreib mal y=5.0/10.0 oder mach bei Variablen nen cast.
y=(float) a / (float) b.
goog* mal typecast

von KiriKiri (Gast)


Lesenswert?

Uwe schrieb:
> Schreib mal y=5.0/10.0 oder mach bei Variablen nen cast.
> y=(float) a / (float) b.
> goog* mal typecast

super danke, so einfach wenn man weiss wie :-)

von Karl H. (kbuchegg)


Lesenswert?

KiriKiri schrieb:
> Uwe schrieb:
>> Schreib mal y=5.0/10.0 oder mach bei Variablen nen cast.
>> y=(float) a / (float) b.
>> goog* mal typecast
>
> super danke, so einfach wenn man weiss wie :-)

Viel wichtiger wäre allerdings, wenn du wissen würdest: Warum?

FAQ: Datentypen in Operationen

von Bananen Joe (Gast)


Lesenswert?

Weil 5 / 10 = 0 mit Rest 5 ist ....

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.