calculo de AD

Caros colegas, estou montando um voltimetro para ler tensões em milivolts, acontece que tensões acima de 70mV estou tendo um erro danado devido ao meu calculo utilizado, segue o trecho do codigo se alguém puder da um pitaco na caca que estou fazendo eu ficaria muito grato!!
LPC_ADC->ADCR |= (1<<24);
while (!(LPC_ADC->ADGDR & (1UL<<31)));
val1[0] = ((LPC_ADC->ADGDR >> 4) & 0xFFF);
LPC_ADC->ADCR &= ~(7<<24);
va1[0] = val1[0];
va1[0] = ((float)((va1[0])*100)/0x00000FFF) *3.3;
Value1[0]=(unsigned char)(va1[0]/100%10);
Value1[1]=(unsigned char)(va1[0]/10%10);
Value1[2]=(unsigned char)(va1[0]%10);
o problema está aqui, nesta multiplicação que estou fazendo, não tenho idéia se a multiplicação está correta!
va1[0] = ((float)((va1[0])*100)/0x00000FFF) *3.3;
obrigado!
LPC_ADC->ADCR |= (1<<24);
while (!(LPC_ADC->ADGDR & (1UL<<31)));
val1[0] = ((LPC_ADC->ADGDR >> 4) & 0xFFF);
LPC_ADC->ADCR &= ~(7<<24);
va1[0] = val1[0];
va1[0] = ((float)((va1[0])*100)/0x00000FFF) *3.3;
Value1[0]=(unsigned char)(va1[0]/100%10);
Value1[1]=(unsigned char)(va1[0]/10%10);
Value1[2]=(unsigned char)(va1[0]%10);
o problema está aqui, nesta multiplicação que estou fazendo, não tenho idéia se a multiplicação está correta!
va1[0] = ((float)((va1[0])*100)/0x00000FFF) *3.3;
obrigado!