¿Como mostrar decimales en C?

Saitchev
29 de Enero del 2010
Hola, tengo una duda, necesito saber como se puede hacer para elegir cuantos decimales mostrar de un float en un printf, quiero decir, se pide por teclado un numero real, y luego otro entero que definirá el numero de decimales a mostrar del real.
Ejemplo, se introducen el 5.78695 y el 3, el programa debe mostrar 5.786 (solo 3 decimales)

Gracias!

Capitan Kirk
29 de Enero del 2010
Por ejemplo:

printf("%8.3f", x) imprime el valor de x (float o double) con 8 caracteres en total, de los cuales 3 corresponden a la parte decimal. Ten en cuenta que en esos 8 caracteres están incluídos el signo y el punto decimal.

printf("%+8.3f", x) hace lo mismo, pero forzando a que se imprima el signo del número (normalmente, sólo imprimirá el signo si es negativo).

Si el total tiene menos de los caracteres indicados, completará con espacios en blanco por la izquierda. Si el total excede el formato, pasará del formato, aunque te respetará el número de dígitos decimales. Por ello, si usas como especificador de formato "%1.3f", te imprimirá los números tal cual, siempre con tres decimales.

Por defecto (usando simplemente "%f"), se imprimen 6 decimales.

Si quieres indicar el número de decimales a mostrar (dado desde el teclado, como indicas en tu consulta), tendrás que generar la cadena con el formato, por ejemplo, prueba algo parecido a esto:

int n;
float x;
char formato[16];

int main(void)
{
printf("Numero: "); scanf("%f", &x);
printf("Decimales: "); scanf("%d", &n);
sprintf(formato, "%%1.%df", n);
printf(formato, x);
}

Siempre te va a redondear la última posición decimal que le indiques, hacia abajo si la siguiente es menor de 5, hacia arriba si es igual o mayor de 5. Así, con 3 decimales, el número que indicas en tu consulta te lo presentará como 5.787

Espero que sea esto lo que buscabas. Saludos,