Forum: Mikrocontroller und Digitale Elektronik Rechnen mit Kommazahlen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Mike (Gast)


Lesenswert?

Hallo... ich wolltrnur fragen, wie ich mit Kommazahlen rechnen kann. 
z.B.:

int i;
charbuffer[10];
double  j;

i=5;
j=i*1.024;
itoa(j,buffer, 10);
lcd_puts(buffer);

aber leider funktioniertdas bei mir nichtso recht. Kann mir jemand 
helfen?

gruß,
Mike

von Andreas S. (andreas) (Admin) Benutzerseite Flattr this


Lesenswert?

Was heißt es "funktioniert nicht"? Welche Fehlermeldung? Welchen 
Compiler verwendest du überhaupt?

von BernhardT (Gast)


Lesenswert?

charbuffer[10] oder
char buffer[10] ?

von Mike (Gast)


Lesenswert?

es heißt schon char buffer[10] (tippfehler)

der compiler meldet keinen fehler, das lcd zeigt nur die 
Nachkommastellen der Zahl an

von Mike (Gast)


Lesenswert?

sorry hab gemeint das LCD zeigt die Nachkommastellen nichtan, die 
Ganzzahlen schon.

von BernhardT (Gast)


Lesenswert?

itoa ist eine Abkürzung für Integer to ASCI ! Du hast immer noch nicht 
erzählt welchen Compiler - manche kennen z.B Dtostrf etc.
Gruß Bernhard

von Andreas S. (andreas) (Admin) Benutzerseite Flattr this


Lesenswert?

itoa() ist nur für Integer, also Ganzzahlen, deshalb wandelt der 
Compiler da Float nach Int um. Probier's mal mit ftoa() falls der 
Compiler das hat.

von Andreas S. (andreas) (Admin) Benutzerseite Flattr this


Lesenswert?

ftoa() gibt es beim avr-gcc nicht, muss dtostrf heißen. Schau mal in die 
avr-libc Doku.

von Markus Kaufmann (Gast)


Lesenswert?

itoa wandelt integer in String. Wenn Du ihm ein double übergibst, dann 
wandelt er den in ein int um.

von Mike (Gast)


Lesenswert?

danke,... ich werd's probieren

von Mike (Gast)


Lesenswert?

also ich hab's ausprobiert, jedoch komm ich mitder Syntax nich ganz 
klar, wie mussich dasverwenden? - beispiel code wäre super. ich verwende 
WinAVR

von Mike (Gast)


Lesenswert?

hier meinversuchsprogramm:

        char buffer[16];
  int temp;
  double test;

  lcd_init(LCD_DISP_ON);

  temp = 15;
  test = temp * 3.132;

  dtostrf(test, 8, 3, buffer);

  lcd_clrscr();
  lcd_puts(buffer);

von BernhardT (Gast)


Lesenswert?

avr-libc-user-manual.pdf im \doc von WIN-AVR:

Buffer muss Pointer sein also *buffer ob deine LCD Routiene damit 
zurechtkommt weiss ich nicht.
Der rest sieht ganz gut aus.
Ach so LIBFLAGS = -lm muss im Makefile gesetzt sein.
Gruß Bernhard

von Andreas S. (andreas) (Admin) Benutzerseite Flattr this


Lesenswert?

buffer ist bei der Deklaration als Array ein Pointer, das passt schon in 
Mike's Programm.

von BernhardT (Gast)


Lesenswert?

Korrektur s kann Pointer sein (muss wohl nicht zwingend). Sei so gut und 
gib bitte die Fehlermeldungen mit an.
Gruß Bernhard

von BernhardT (Gast)


Lesenswert?

Ist für mich ein großes (Umsteiger-) Problem, das ich noch mit String 
denke. Ein Array anstelle eines Pointer zu nemen gibt bei den meisten 
Pascal Compilern auch eine Fehlermeldung.
Gruß Bernhard

von Andreas S. (andreas) (Admin) Benutzerseite Flattr this


Lesenswert?

Egal ob du buffer als "char *buffer=..." oder als "char buffer[20]" 
deklarierst, wenn du "buffer" schreibst ist das immer ein Pointer der 
auf das erste Element des Arrays zeigt.

von BernhardT (Gast)


Lesenswert?

@Andreas hab ich kapiert (und auch schon ne ertse eigne Anwendung 
entmüllt :-)
Vielen Dank
Bernhard

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]
  • [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.