mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik integer to float


Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfach einen Cast machen:

variable_float = ((float)variable_integer) / variable_float;

Autor: Simon (Gast)
Datum:

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

Autor: der mechatroniker (Gast)
Datum:

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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

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

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ::: (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.