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?
Gast #3987081
Lesenswert?

Wenn du im Formatstring statt %2i einfach %02i schreibst, geht das. Ein 
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.

pitschu
#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.
Gast #3987085
Lesenswert?

Wenn du die Einer und Zehner anders umwandelst würde es ohne Modulo 
gehen.

2607/100
=>
26.07 umwandeln in int
=>
26 mal 100 (entspricht der Zahl vor dem Komma)
=>
2600
=>
2607-2600 = 07 bzw.7 (stelle hinter dem Komma)
Gast #3987106
Lesenswert?

Danke pitschu und Karl Heinz.
Hätte ich selber drauf kommen müssen funktionert Tip Top!

Das mit den Negativen habe ich gerade Simuliert. Mit abs gibt es bei 
-0.5 leider +0.5 ansonsten stimmen die Ergebnisse. Also werde ich für 
Minus seperat machen so wie von Karl Heinz Empfholen.

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