Da Du eine Temperatur berechnen willst - die sich ja normalerweise nicht soooo schnell ändert - ist es wahrscheinlich am Einfachsten und vom Softwaredesign am Schönsten, wenn Du floats nimmst:

Code:
#define U_MAX 5.0
#define ADC_MAX 1023.0

uint16_t adcVal = get_adc();
float inputVoltage = U_MAX*adcVal/ADC_MAX;
// der Rest entsprechend, ohne die ganzen Skalierungen
Kleiner Hinweis am Rande: die beiden defines würde man heutzutage auf einem uC mit viel RAM durch Konstanten ersetzen, aber bei kleinen AVRs spart das auf diese Art etwas RAM.