Forum: Mikrocontroller und Digitale Elektronik Frage: Float-Berechnung in C


von Eduard (Gast)


Lesenswert?

Morgen zusammen!

Ich habe mal eine Frage - wie wird in C ein Float-Wert behandelt?
Ich berechne folgendes:
1
dac_test_value = (float) (ma_value / 100.0);

So funktioniert es auch. dac_test_value ist als float deklariert. 
ma_value ist ein uint.

Meine Frage: Wenn ich nicht durch 100.0, sondern nur durch 100 teile, 
dann schneidet er mir die Nachkommastellen ab. Wieso ist das so? Ich 
caste den Wert doch schon extra als float.

von Karl H. (kbuchegg)


Lesenswert?

Eduard schrieb:

> dann schneidet er mir die Nachkommastellen ab. Wieso ist das so? Ich
> caste den Wert doch schon extra als float.


Du castest nicht den Wert.
Du castest das Ergebnis von
   ma_value / 100
und getreu den C-Regeln, wird das als Integer Division durchgeführt, 
wenn ma_value ein uint ist.


  dac_test_value = (float) (ma_value / 100);

* zuerst wird dividiert.
* dann wird gecastet
* dann wird zugewiesen

Genau so steht es da und genau so wird es auch durchgeführt

http://www.mikrocontroller.net/articles/FAQ#Datentypen_in_Operationen

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.