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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.