Cómo imprimir números con puntos decimales especificados en C++
Este artículo introducirá cómo imprimir los números con puntos decimales especificados en C++.
Use los métodos std::fixed
y std::setprecision
para especificar la precisión
Este método utiliza los llamados manipuladores de E/S de la biblioteca estándar definida en el encabezado <iomanip>
(ver lista completa). Estas funciones pueden modificar los datos del flujo y se utilizan principalmente para operaciones de formato de E/S. En el primer ejemplo, sólo usamos el método fixed
, que modifica el formato por defecto de manera que los valores de punto flotante se escriben usando la notación de punto fijo. Nótese, sin embargo, que el resultado siempre tiene una precisión predefinida de 6 puntos.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324,
10.222424, 6.3491092019, 110.12329403024,
92.001112, 0.000000124};
for (auto &d : d_vec) {
cout << fixed << d << endl;
}
return EXIT_SUCCESS;
}
Resultado:
123.231000
2.234300
0.324000
10.222424
6.349109
110.123294
92.001112
0.000000
Alternativamente, podemos fijar los puntos decimales después de la coma y especificar el valor de precisión simultáneamente. En el siguiente ejemplo de código, la función fixed
se llama junto con setprecision
, que a su vez toma el valor int
como parámetro.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::setprecision;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324,
10.222424, 6.3491092019, 110.12329403024,
92.001112, 0.000000124};
for (auto &d : d_vec) {
cout << fixed << setprecision(3) << d << endl;
}
return EXIT_SUCCESS;
}
Resultado:
123.231
2.234
0.324
10.222
6.349
110.123
92.001
0.000
El ejemplo de código anterior resuelve el problema inicial, pero la salida parece bastante mezclada, y apenas tiene formato legible. Podemos usar las funciones std::setw
y std::setfill
para mostrar los valores de flotante en un vector dado alineados a la misma posición de la coma. Para ello, debemos llamar a la función setw
para decirle al cout
la longitud máxima de cada salida (en este caso elegimos 8). A continuación, se llama a la función setfill
para especificar un char
que llenará los lugares de relleno. Finalmente, añadimos los métodos utilizados anteriormente (fixed
y setprecision
) y la salida a la consola.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::setfill;
using std::setprecision;
using std::setw;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324,
10.222424, 6.3491092019, 110.12329403024,
92.001112, 0.000000124};
for (auto &d : d_vec) {
cout << setw(8) << setfill(' ') << fixed << setprecision(3) << d << endl;
}
return EXIT_SUCCESS;
}
Resultado:
123.231
2.234
0.324
10.222
6.349
110.123
92.001
0.000
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookArtículo relacionado - C++ Float
- Establecer la precisión de los números de punto flotante en C++
- Redondear el número de coma flotante a 2 decimales en C++
- Cómo convertir Float en Int en C++
- Cómo generar un número aleatorio entre 0 y 1 en C++
- Cómo convertir el float en cadena de caracteres en C++
- Cómo generar un número flotante aleatorio en C++