Prozentrechnung mit Integer

OP #2842176
Lesenswert?
• ▲
▼
Hallo,

ich habe eine Prozentrechnung vor, der "imp2 kommt alle 1ms und soll den 
Wert "jalTime[ArrayNrImpSpeicher] +=1;" erhöhen und somit von 0-100% 
steigen. Die Berechnung mache ich so und klappt leider nicht:
(PS.: ich habe sie schon extra in drei Zwischenschritte 
aufgeteilt....Ziel ist es natürlich in einer Zeile zu erledigen!
1
uint16_t array_time_open[20] = {500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
2
uint16_t array_time_close[20] = {20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
3
int temp1 = 0;
4
float temp2 = 0;
5
int temp3 = 0;


1
void JalTimmeMessen (bool imp, uint8_t ArrayNrImpSpeicher, bool auf, bool ab) 
2
{
3

4

5

6

7
 if (auf && imp)
8
  {
9
  
10
  
11
  jalTime[ArrayNrImpSpeicher] +=1;
12
  
13
  
14

15
  
16
  if ((jalTime[ArrayNrImpSpeicher]%10)==0)
17
    {
18
    
19
  temp1 = array_time_open[ArrayNrImpSpeicher] - array_time_close[ArrayNrImpSpeicher];
20
  usart_write_int0(temp1);
21
  
22
  temp2 = jalTime[ArrayNrImpSpeicher] / temp1;
23
  usart_write_int0(temp2);
24
  
25
  temp3 = temp2 * 100;
26
  usart_write_int0(temp3);
27
  
28
  
29
  
30
    }
31
  }
32
}

temp1 zeigt :480 an
temp2: 0
temp3:0

Eigentlich sollte in temp3 0-100% stehen?!?!
Wie kriege ich das denn wohl hin?
#2842230
Lesenswert?
• ▲
▼
Und weils wichtig ist:
Zu deinem Denkfehler

  temp2 = jalTime[ArrayNrImpSpeicher] / temp1;

jalTime[ArrayNrImpSpeicher]    ist (offenbar) ein int
temp1                          ist ein int

Damit wird ein int durch einen int dividiert, und das liefert ein int 
Ergebnis.

Das du dieses int-Ergebnis an einen float zuweist

   temp2 = ....

ist zwar nett, aber für die Division unerheblich. Wo keine Kommazahlen 
enstehen, können auch keine gespeichert werden.

FAQ: Datentypen in Operationen

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.