Weil Du erst mal nur Integer miteinander multiplizierst und danach erst einen Float daraus machst.

5000/1024 = 4 (rest: 0.8828125)

Fehlerwert= (4.8828125-4)/4.8828125 = 18,08% (Probier's mal mit 360V aus)

besser ist:
Code:
const float vref = 5.0;
float scale      = vref/1024.0;
float voltage    = 0.0;
char buffer[7];

while(true) 
{
   voltage = scale * (float)adconvert(1); 
   sprintf( buffer, "%5.4f", voltage );
   functionToPutStuffToDisplay(buffer);
}