mikrocontroller.net

Forum: Compiler & IDEs float in int convertieren


Autor: Bernd M. (adventureman1972)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kann mir bitte jemand den Code für die Konvertierung von float in int 
mitteilen?
So was ähnliches wie itoa oder utoa!

Nach AD-Wandlung wird ADC-Wert als float weiterberechnet( Genauer!) und 
soll dann als int ausgegeben werden.

Auch andere Lösungen nehme ich gerne an...

float Spannung = 0;
int Akku8 = 0;

sprintf( cBuffer, "4:%d.%03dV", Akku8 / 1000, Akku8 % 1000 );
set_cursor(10,2);      // Position für Akku8
lcd_string(cBuffer );  // Ausgabe an Display

Benutze AVR-Studio PonyProg und ATmega16

Autor: der mechatroniker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso willst du einen float kurz vor der Ausgabe nochmal in einen int 
konvertieren, damit sprintf ihn dann eh nochmal konvertieren muss (in 
einen string nämlich)?

Abgesehen davon kannst du ihn da einfach "reinquetschen", den Rest macht 
der Compiler:
float f = 5.7;
int i = f;

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nach AD-Wandlung wird ADC-Wert als float weiterberechnet( Genauer!)
Meinst du   :-o

Als Trost: du bist nicht der einzige, wie im 
Beitrag "Re: ERROR:Xst:1532" zu lesen ist  ;-)

Du wirst bei genauer Betrachtung (speziell in deinem Anwendungsfall ADC) 
mit einem long integer auf jeden Fall besser versorgt. Multipliziere den 
Wert einfach mit 1000 und rechne immer mit dem 1000fachen. Platz dafür 
ist ine einem long genug da.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Nach AD-Wandlung wird ADC-Wert als float weiterberechnet( Genauer!)

Was verstehst du unter genau ? Fixpoint Arithmetik ist hier die Lösung. 
Du mußt eh ne ganze Menge berücksichtigen um einen "genauen Wert" zu 
erhalten. Das bischen Wert umrechnen ist da noch das geringste Problem.

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.