Streaming: Nachkommastellen

Hi,
nachdem ich von euch letztens Streaming zur Ausgabe gezeigt bekommen habe, baue ich das gerade in mein neues Projekt ein.
Allerdings steh ich schon wieder vor einem Problem. Das Internet hat auch nicht viel hergegeben:

Es geht um Nachkommastellen eines Float:

  Temperatur[6] = 66.6;

  lcd.print(Temperatur[6],1);                                      // --> ergibt: "66.6" auf dem Display
  lcd << "T6 = "<< (Temperatur[6],1) << " " << char(0xdf) << "C";  // --> ergibt: "T6 = 1 °C"

Irgendwie klappt das Abschneiden der 2. Nachkommastelle nicht :frowning:
Gibts da einen Trick?

_FLOAT(Temperatur[6],1)

WOW geht.... THX

Ist das _FLOAT jetzt was aus C/C++ oder Streaming-spezifisch?

Gibts zu Streaming irgendwo eine vernünftige Doku?
Bei >>Arduiniana<< hab ich nix gefunden

EDIT:
OK.. Streaming

struct _FLOAT
{
  float val;
  int digits;
  _FLOAT(double v, int d): val(v), digits(d)
  {}
};

Wie immer den Header anschauen. Das sind sowieso nur ein paar inline Funktionen.

Neben _FLOAT gibt es noch diese Optionen für Integer:

#define _HEX(a)     _BASED(a, HEX)
#define _DEC(a)     _BASED(a, DEC)
#define _OCT(a)    _BASED(a, OCT)
#define _BIN(a)     _BASED(a, BIN)

Also was man sonst als zweiten Parameter angibt. Float muss halt extra behandelt werden.

Man kann sich da auch leicht selbst eigene Formatierungsfunktionen schreiben. Ein struct mit Konstruktor erstellen für die Daten die man angeben will. Dann den << Operator überladen, die Daten aus dem struct extrahieren und wie man es braucht an print() übergeben.

Für Float geht das so:

struct _FLOAT
{
  float val;   //Wert
  int digits;  //Anzahl der Stellen
  _FLOAT(double v, int d): val(v), digits(d)   //Konstruktor
  {}
};

inline Print &operator <<(Print &obj, const _FLOAT &arg)
{ 
   obj.print(arg.val, arg.digits);   //Ausgabe
   return obj;   //Referenz zurückgeben damit man << Aufrufe kaskadieren kann
}

So könnte man z.B. auch leicht Funktionen schreiben die eine Zeit oder ein Datum ausgeben