Modulo Hilfe

Gast #3987069
Lesenswert?

1
void TEMPsetzen(unsigned char TempLow,unsigned char TempHigh)
2
{  
3
  int Temperatur = TempLow + (TempHigh<<8);    //Temperatur übergeben
4
  Temperatur = (Temperatur / 1.28 + 0.5);      //Temperatur wandeln und runden
5
  char stringa[30];      //30 zeichen zur verfügung
6
  sprintf(stringa, "Temp = %+3i.%2i C", Temperatur/100,Temperatur%100);    //Temperatur ausgeben
7
  lcd_setcursor(0,2);        //Zu richtigem Absatz wechseln
8
  lcd_string(stringa);
9
}

Wenn ich eine Temperatur von z.B 27.88 bekomme funktioniert es.
Wenn die Temperatur jedoch 26.07 ist, wird 26.7 Angezeigt. Was mir auch 
noch logisch erscheint denn 2607/100  = 26 Rest 7

Meine Frage wie krieg ich das hin das mir die 0 auch angezeigt wird?
#3987083
Lesenswert?

pitschu schrieb:

> Tipp noch: Wenn die Temperatur auch negativ werden kann, würde bei -1,6°
> dann -1.-60 angezeigt. Man sollt den Nachkommateil also mit
> abs(Temperatur%100) in das sprintf schicken.

Da gibt es noch eine Falle:
Ist die Temperatur bsp. -0.5 dann ist der Vorkommanteil gleich 0. 0 ist 
aber immer positiv. D.h die Temperatur würde dann als 0.5 angezeigt.

-> Für negative Werte einen eigenen Fall machen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren