skorpi08:
Wie mach ichs mit x-tel Grad?
Dass mit raw*625L zeigt nicht richtige Werte an.
Das ist dann ja auch ein "long", die Zahlen sind extrem gross, und der Variablentyp long hat ebenfalls 4 Bytes.
So müßte es gehen in Zehntelgrad (mit Abrundung der Hundertstel):
holdingRegs[CELSIUS] = raw*625L/1000; // Zwischenrechnung ist long, Ergebnis passt in int
Mit *625 bekommst Du zehntausendstel Grad, geteilt durch 1000 sind es dann zehntel Grad.
Und in zehntelgrad angegeben ist die Temperatur dann so klein, dass Du den Wert problemlos auf einen int zuweisen kannst, ohne dass ein Zahlenüberlauf auftritt.