Forum: Mikrocontroller und Digitale Elektronik Multiplikation / Division


von Ma B. (drumstick)


Lesenswert?

Hallo!

Ich arbeite mit dem stm32f103vdt6 und dem uVision von Keil.
1
float Ta  = 5 / 1000;
2
float Tx  = (5 * 0.001);

wenn ich dies im Watchregister anzeigen lasse, bleibt Ta immer 0 und Tx 
ergibt 0.005. Wieso?

Danke und Gruss!

M.B.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

M. B. schrieb:
> Wieso?

Weil das so definiert ist. Standardmäßig wird in int gerechnet, es sei 
den einer der Operanden ist (wie z.B. dein 0.001) flaot. Der Ergebnistyp 
hingegen ist erst mal "egal".

von Christian G. (christian_g83)


Lesenswert?

M. B. schrieb:
> Wieso?

Weil 5 / 1000 in Ganzzahlarithmetik durchgeführt wird. Damit das 
herauskommt, was Du erwartest, muss mindestens ein Wert vom Typ float 
sein.

Also meinetwegen

5.0 / 1000

oder

(float)5 / 1000

Christian

von Bassti (Gast)


Lesenswert?

Typcast googlen!

float Ta = (float)5 / 1000;

von Ma B. (drumstick)


Lesenswert?

Danke!

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.