Forum: Compiler & IDEs float to string mit *ecvt


von Martin Krocker (Gast)


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

von Rufus Τ. F. (rufus) Benutzerseite


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);

von Walter (Gast)


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

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.