Forum: Mikrocontroller und Digitale Elektronik integer to float


von Simon (Gast)


Lesenswert?

Ich Teile zwei Variablen.


float = integer / float;

jetzt wird das aber immer eine integer division.

float = float / float;
funzt wunderbar.

gibt es da eine moeglichkeit das er den integer wie ein float behandelt?
oder muss ich das irgendwie umrechnen?

von Jörg S. (joerg-s)


Lesenswert?

Einfach einen Cast machen:

variable_float = ((float)variable_integer) / variable_float;

von Simon (Gast)


Lesenswert?

funzt, aber das hat der compiler gemerkt....
und mir gleich mal 20% mehr vom Atmega16 belegt.

von der mechatroniker (Gast)


Lesenswert?

int durch float wird nach dem C-Standard in float (oder wars sogar 
double?) gerechnet. Poste doch mal den relevanten Ausschnitt des 
Programms.

von (prx) A. K. (prx)


Lesenswert?

Simon schrieb:

> funzt, aber das hat der compiler gemerkt....
> und mir gleich mal 20% mehr vom Atmega16 belegt.

Richtige Lib für Fliesskommaverarbeitung einbinden. Doku von avr-libc 
lesen (wenn GCC).

von Vlad T. (vlad_tepesch)


Lesenswert?

Die entscheidenere Frage ist:
Warum benutzt du auf einem 8bit-µC fließkommazahlen?
Ich würd behaupten, dass in 100% der Anwendungen, für die sich ein AVR 
eignet, Fließkommazahlen durch IntegerArithmetik ersetzt werden können.

Solltest du wirklich zur Laufzeit auf floats angewiesen sein, hast du 
warhscheinlich den falschen µC gewählt.

von (prx) A. K. (prx)


Lesenswert?

Nicht übertreiben. So übel sind AVRs nicht. Float heisst nicht 
automatisch dass man Höchstleistung braucht.

von Vlad T. (vlad_tepesch)


Lesenswert?

ich hab nicht gesagt, dass die übel sind.
Im gegenteil. Sie sind großartig.

Es ist allerdings prinzipbedingt, dass sich 8bit µCs sich nicht für 
rechenexcesse in 32bit floats eignen.
Und wenn man nur wenige float operationen hat, kann man die auch auf 
integer umstellen.

von (prx) A. K. (prx)


Lesenswert?

Und wenn man den Platz im Flash übrig hat, dann kann man sich unnötige 
Festkommaverrenkungen auch ersparen und Fliesskomma verwenden.

Ich mag diese reflexhafte Dogmatik nicht so.

von Matthias (Gast)


Lesenswert?

Bei der Rechenleistung der heutigen 8-Bit µC ist Float in den meisten 
Fällen kein Problem. Wenns damit einfacher zu programmieren ist, warum 
nicht. Und ob der Flash nun leer ist oder die Lib beherbergt ist auch 
egal.

von ::: (Gast)


Lesenswert?

Es gibt leider solche Libraries, die beinhalten vom Sin-Tan-Arc-Sqrt-... 
alles was man sich denken koennte und verschlunzen so beliebig viel 
Platz. Da sollte doch eine bessere loesung her, die nur eine 
Multiplikation importiert, wenn eine Multiplikation gebraucht wird.

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.