float in int convertieren

OP #1424993
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...

1
float Spannung = 0;
2
int Akku8 = 0;
3

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

Benutze AVR-Studio PonyProg und ATmega16
Gast #1425031
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:
1
float f = 5.7;
2
int i = f;
Moderator (Firma: Titel) Persönliche Seite #1425080
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.
Gast #1425179
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

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