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?
Einfach einen Cast machen: variable_float = ((float)variable_integer) / variable_float;
funzt, aber das hat der compiler gemerkt.... und mir gleich mal 20% mehr vom Atmega16 belegt.
int durch float wird nach dem C-Standard in float (oder wars sogar double?) gerechnet. Poste doch mal den relevanten Ausschnitt des Programms.
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).
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.
Nicht übertreiben. So übel sind AVRs nicht. Float heisst nicht automatisch dass man Höchstleistung braucht.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.