Forum: Compiler & IDEs float in int convertieren


von Bernd M. (adventureman1972)


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

von der mechatroniker (Gast)


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;

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von Bernd (Gast)


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.

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.