• Martes 19 de Marzo de 2024, 08:07

Autor Tema:  ¿Como mostrar decimales en C?  (Leído 72446 veces)

Saitchev

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
¿Como mostrar decimales en C?
« en: Miércoles 27 de Enero de 2010, 18:45 »
0
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!

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: ¿Como mostrar decimales en C?
« Respuesta #1 en: Miércoles 27 de Enero de 2010, 18:59 »
0
Código: C
  1. float a = 235.36558;
  2.  
  3.     printf("%.2fn", a);
  4.  

Precediendole de un . y luego, la cantidad de decimales a mostrar
http://www.cplusplus.com/reference/clib ... io/printf/

Saitchev

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: ¿Como mostrar decimales en C?
« Respuesta #2 en: Jueves 28 de Enero de 2010, 17:26 »
0
Quizá me has malentendido, no es que quiera mostrar 2 decimales siempre, sino que quiero mostrar N decimales, donde N es un entero que el usuario va a introducir por teclado cada vez que inicie ya el programa, es decir, que una vez puede introducir 3, y mostrará 3 (N) decimales, luego introducirá 5 por ejemplo, y mostrará (N) 5 decimales...

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: ¿Como mostrar decimales en C?
« Respuesta #3 en: Viernes 29 de Enero de 2010, 02:50 »
0
Puedes usar sprintf para generar tu cadena formateada, y luego la imprimes con printf de la siguiente manera:

Código: C++
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int decimales;
  6. float numero;
  7. char cadena_formateada[256];
  8.  
  9. int main()
  10. {
  11.     printf("Numero a leer: ");
  12.     scanf("%f", &numero);
  13.    
  14.     printf("Cuantos decimales: ");
  15.     scanf("%d", &decimales);
  16.     sprintf(cadena_formateada, "%%.%dfn", decimales);
  17.    
  18.     printf(cadena_formateada, numero);
  19.  
  20.     system("pause");
  21.     return 0;
  22. }
  23.  
  24.  

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Saitchev

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: ¿Como mostrar decimales en C?
« Respuesta #4 en: Viernes 29 de Enero de 2010, 13:44 »
0
Muchas gracias profesor, nunca había oido hablar del "sprintf" en C, quizá por eso le di tantas vueltas y no habia manera de sacarlo.
Supongo que el "sprintf" se usa cuando se quiere imprimir una cadena de caracteres, es asi?
Un saludo.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: ¿Como mostrar decimales en C?
« Respuesta #5 en: Viernes 29 de Enero de 2010, 19:44 »
0
sprintf (abreviacion de string printf), funciona igual que printf, solo que en lugar de mandar el resultado a pantalla, lo manda a una cadena (string). De esa forma fue posible utilizarlo para generar la cadena de formato dinamicamente, y luego usar esa cadena para mostrarla en pantalla por medio del printf normal.

Tambien existe la funcion fprintf, que es igual que las anteriores salvo que envia el resultado a un archivo en lugar de a la pantalla o a una cadena.

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Saitchev

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: ¿Como mostrar decimales en C?
« Respuesta #6 en: Domingo 31 de Enero de 2010, 22:09 »
0
Perfecto, muchas gracias por toda la información.
Un saludo.