float significa número de ponto flutuante. Em C, o tipo de dado float é usado nos casos em que a precisão do número total de dígitos é 7. Por exemplo: - o número decimal. 12.3546987 não pode ser armazenado no float porque possui um total de 9 dígitos. A saída será mostrada como 12.354699, ou seja, os primeiros 7 dígitos serão mostrados conforme digitados na entrada e o oitavo dígito será arredondado. O tipo de flutuador pode representar valores variando de aproximadamente 1,5 x 10 ^ (- 45) a 3,4 x 10 ^ (38). Em termos de alocação de memória, float é um tipo de dados de ponto flutuante de precisão única e 32 bits.
Ao contrário do float, o double tem uma precisão de 15 a 16 dígitos.O intervalo de double é de 5,0 × 10 ^ (- 345) a 1,7 × 10 ^ (308). Em termos de alocação de bytes, double é um dado de ponto flutuante de 64 bits tipo.
O problema surge no seu uso. Float ou double não afeta printf, mas no caso de scanf, o tipo de dados apropriado deve ser usado, dependendo do número total. de dígitos no número flutuante. isso deve ser lido da entrada.
Portanto, o dobro é preferido sobre o float para maior precisão dos dados.
Espero que isto ajude.