Integer als Ergebnis mit Float berechnen

Gast #1213400
Lesenswert?

unsigned long int ist_frequenz;
float ist_frequ_tmp;

ist_frequenz=freq_overfl_cnt_tmp*(unsigned long int)0xFFFF;
ist_frequenz+= (unsigned long int)TCNT1_tmp-20;


ist_frequ_tmp=(float)ist_frequenz / (float)8000000;

ist_frequ_tmp = 1/ist_frequ_tmp;
>>ist_frequenz=ist_frequ_tmp*32;<<
--------

Hallo,
ich habe oben geposteten Code. Sobald die mit ">>...<<" markierte Zeile 
eingefügt wird, wird der Code plötzlich 4-fach so groß wie zuvor -> also 
hoher Rechenaufwand für die Berechnung.
Es bringt auch nichts mit casten etc. deshalb denke ich dass irgendwo 
ein grundsätzlicher Fehler vorliegt, aber WO?
Für nen Tipp wäre ich dankbar!
Gast #1213410
Lesenswert?

Gast wrote:
> Es bringt auch nichts mit casten etc. deshalb denke ich dass irgendwo
> ein grundsätzlicher Fehler vorliegt, aber WO?
> Für nen Tipp wäre ich dankbar!

Dein absolut grundsätzlicher Fehler: Floats. Floats sind so ein 
Spielzeug, das viele Spielkinder anzieht und dass viele auf Biegen und 
Brechen benutzen wollen. Eigentlich braucht kein Schwein 
Fließkommazahlen, selbst moderne Sternwarten kommen komplett ohne aus.

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