Hallo, habe ein kleines Problem bei einer Berechnung. Ich verwende den
CCS C Compiler zur Programmierung eines PIC µC. Das Problem betrifft
folgende Formel:
1 | dutyp = 30+(70/(max_temp-min_temp))*(temp-min_temp);
|
Die einzelnen Variablen folgendermaßen deklariert:
1 | signed int16 temp=0; // Temperature in °C
|
2 | int8 min_temp; // Min.-Temp
|
3 | int8 max_temp; // Max.-Temp
|
4 | signed int16 dutyp=0; // Percentage of Duty Cycle
|
Bei folgenden Werten:
min_temp = 20
max_temp = 50
temp = 47
Erhalte ich als Ergebnis 84. Richtig wäre 93.
Das Problem ist, dass bei der Division die Nachkommastellen wegfallen.
Habe schon einiges versucht mit der Variablendeklaration usw. Leider
ohne Erfolg.
Wenn ich statt der Division "70/(max_temp-min_temp)" den dezimal Wert
"2.3333" eingebe, dann stimmt das Ergebnis. Aber das bringt mich
natürlich nicht weiter.
Wär klasse, wenn mir da jemand weiterhelfen könnte! :-)