En el programa dado, ¿por qué obtuve resultados diferentes para cada uno de los printfs?
#include <stdio.h>
int main()
{
float c = 4.4e10;
printf("%f\n", c);
printf("%f\n", 4.4e10);
return 0;
}
Y muestra el siguiente resultado:
44000002048.000000
44000000000.000000
doublea floaten el lenguaje C? ¿O desea saber qué valores resultan de la conversión, es decir, qué efectos tiene la conversión? ¿O algo mas?
Csolíamos usar printf("%f",x)un floaty printf("%lf",x)para un double. ¿Cuándo cambiaron las cosas? ¿Y cómo se imprime explícitamente un (único) float- printf("%hf",x)??
%lfen printf es lo mismo que %f. A floaten un argumento variable es convertido en a doublepor el compilador, al igual que a shortse convierte en an int.
4.4e10es unadoubleconstante a la que se conviertefloaten la inicializacióncpero que se mantiene como unadoublecuando se pasa aprintf. Sin embargo, es posible que también le interese saber que la adición de unfsufijo hace que sea unafloatconstante: La impresión4.4e10fmostrará el mismo valor que resulta de inicializaciónca4.4e10f. Distinguirfloatconstantes dedoubleconstantes puede ser importante para hacer un trabajo de calidad con aritmética de punto flotante.