Requisitos:
Vamos a ver como mostrar números con precisión.
En primer lugar, te introduzco un tipo de variable nuevo: double. Una variable de tipo "double" puede almacenar valores decimales. Por ejemplo:
double resultado;
resultado = 3.0 / 2;
cout << resultado << endl;
Mostrará por pantalla "1.5". Fíjate que en C++ usamos el punto como separador decimal en lugar de la coma.
Ahora bien, respecto a la manipulación del cout para mostrar los números con el formato que queramos, lo primero que debemos hacer es incluir al principio de nuestro código:
#include <iomanip>
Supongamos que queremos mostrar el número Pi usando un máximo número de dígitos. podemos hacerlo configurando "cout << setprecision(numero_de_digitos);". Ejemplos:
cout << setprecision(4);
cout << 3.141596 << endl; // Mostrara por pantalla 3.142
cout << 103.456 << endl; // Mostrara por pantalla 103.5
El último dígito se redondea (hacia arriba o hacia abajo en función de lo que esté más cerca).
Ahora supongamos que siempre queremos que el número muestre una cantidad concreta de decimales (por ejemplo para tener diversos números alineados uno debajo del otro). Configurando "cout << fixed", la orden"setprecision() pasa a referirse únicamente a las posiciones decimales (en lugar de al número de dígitos), incluso rellenará de ceros la parte decimal hasta llenar la cantidad de caracteres indicada. Por ejemplo:
cout << fixed;
cout << setprecision(4);
cout << 3.141596 << endl; // Mostrara por pantalla 3.1416
cout << setprecision(10);
cout << 3.141596 << endl; // Mostrara por pantalla 3.1415960000
Atención por que una vez se ha configurado fixed o setprecision() todos siguientes cout del código usarán ese formato.
Podemos referirnos en general a la anchura que ocupará una variable con setw(espacio_minimo_que_ocupa). Para hacerlo hay que indicar con qué carácter rellenar los espacios sobrantes mediante la instrucción setfill(letra_con_la_que_rellenar) (la letra debe ir entre comillas simples). Por ejemplo:
cout << setfill('*');
cout << setprecision(7);
cout << setw(1);
cout << 3.141596 << endl; // Mostrara por pantalla 3.141596
cout << setw(10);
cout << 3.141596 << endl; // Mostrara por pantalla **3.141596
Aquí el número que ponemos en setw() indicará el número mínimo de caracteres que ha de ocupar la variable, incluyendo el punto decimal. Los espacios que falten hasta llegar a este número se añadirán a la izquierda.
Atención por que una vez se ha configurado setw() todos siguientes cout del código usarán ese formato.
Y, por supuesto, podemos configurar el cout a la vez que definimos lo que mostrará (la configuración debe hacerse "antes", es decir, a la izquierda, de lo que se quiere mostrar), por ejemplo:
cout << fixed << setprecision(5) << setw(10) << setfill('*') << 3.14 << endl; // Mostrara por pantalla ***3.14000
Por supuesto cout quedará con esa configuración (fixed, setprecision(5), setw(10), setfill('*')) para futuros usos.
Con esto se pueden mostrar valores con un formato más agradable.
Comentarios
el tema
hace falta mas informacion
Bueno
Es la primera vez que me encuentro con una explicación tan fasil de entender, el articulo super excelente, sencilo y claro. Muchas gracias y felicitaciones.
Información incorrecta
Al principio de este artículo hay un error. Dice que 3 / 2 devolverá 1.5, pero no es así: al ser una división de dos enteros, el resultado será otro entero, a pesar de almacenarse en un double (es decir, devolverá 1). Lo correcto sería escribir 3.0 / 2, pues así la división es forzosamente con decimales.
Por lo demás, buen artículo.
Hola Beñat, Gracias por el…
Hola Beñat,
Gracias por el apunte, tienes toda la razón. ¡Corregido!
otra forma
también se puede forzar el tipo anteponiéndole (float) o cualquier otro tipo a la constante numérica
cambio de apariencia de un numero
En C++si yo introduzco :1234.56 atraves de cin, en pantalla debe aparecer 1,234.56 ó 1.234,56
Añadir nuevo comentario