mikrocontroller.net

Forum: Compiler & IDEs float to string mit *ecvt


Autor: Martin Krocker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo@all,

hat schonmal jemand mit der Funktion *ecvt gearbeitete?
Ich möcht eine Float-variable (4-Byte) auf meinem LCD mit
meiner Printfunktion ausgeben:

void LCD_Print (char *string)
{
 while (*string)
      {
        send_char (*string);
  string++;
      }
}

Ich bekomme es einfach nicht hin die Funktion richtig aufzurufen-
laut Buch steht:  char *ecvt(double value, int digit,int *decpt, int
*sign) - value/Wert,
digit/Zeichenanzahl-decpt/LageKommastelle-sign/Vorzeichen.

Kann mir jemand ein Beispiel geben, wie ich die Funktion richtig
benutzte und den Rückgabewert an meine LCD_Print Routine übergebe?
Noch ne zweite Frage-wenn ich 2 charakter Datentypen zu einem Float
zusammen möchte (brauch ich für spätere Berechnungen) kann ich das so
machen - value ist ein float, high und low sind character:
value = high>>8 | low;

Danke schonmal
Martin

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.

  int decimal, sign;
  char *buffer;
  int precision = 10;
  double source = 3.1415926535;

  buffer = _ecvt(source, precision, &decimal, &sign);

  printf("source: %2.10f\n", source);
  printf("buffer: '%s'\n", buffer);
  printf("decimal: %d\n", decimal);
  printf("sign: %d\n", sign);


Gibt folgendes aus:

  source: 3.1415926535
  buffer: '3141592654'
  decimal: 1
  sign: 0

Für Deine Anwendung sähe das dann so aus:

  // Variablen wie vor

  buffer = _ecvt(source, precision, &decimal, &sign);

  LCD_Print(buffer);

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zur 2.Frage:
wenn die beiden Bytes das High und Low Byte einer 16Bit Zahl sind
dann geht es so
value = (high<<8) | low;

<< ist abdersrum als bei dir, Klammern setze ich lieber zu viel

Walter

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.