C++ Variables de tipo double y cout avanzado

Enviado por jvilella el Lun, 23/09/2019 - 03:52

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 / 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 con un máximo de 4 decimales. podemos hacerlo mediante "cout << setprecision(numero_de_digitos) << pi;". Ejemplos:

cout << setprecision(4) << 3.141596 << endl; // Mostrara por pantalla 3.142
cout << setprecision(4) << 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 ocupe 10 caracteres (para tenir diversos números alineados uno debajo del otro por ejemplo). Usaremos "fixed", y rellenará de ceros la parte decimal hasta llenar la cantidad de caracteres indicada. Por ejemplo:

cout << fixed << setprecision(4) << 3.141596 << endl; // Mostrara por pantalla 3.142
cout << fixed << setprecision(10) << 3.141596 << endl; // Mostrara por pantalla 3.1415960000

Al usar "fixed" setprecision() pasa a referirse únicamente a las posiciones decimales. Atención por que una vez se ha puesto "fixed" todos siguientes cout del código usarán fixed.

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('0') << std::setw(10) << 3.141596 << endl; // Mostrara por pantalla 00003.1416
cout << setfill('0') << std::setw(1) << 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.

Con esto se mostrar valores con un formato más agradable.

Printer Friendly, PDF & Email

Añadir nuevo comentario

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.