Tengo una lista de float
valores y quiero imprimirlos cout
con 2 decimales.
Por ejemplo:
10.900 should be printed as 10.90
1.000 should be printed as 1.00
122.345 should be printed as 122.34
¿Cómo puedo hacer esto?
( setprecision
no parece ayudar en esto)
#define FIXED_FLOAT(x) std::fixed <<std::setprecision(2)<<(x)
que simplifica el uso para:cout<<FIXED_FLOAT(d)
Estaba casi allí, necesita usar std :: fixed también, consulte http://www.cplusplus.com/reference/iostream/manipulators/fixed/
salidas:
fuente
setprecision(n)
se aplica al número entero, no a la parte fraccionaria. Debe usar el formato de punto fijo para que se aplique a la parte fraccionaria:setiosflags(ios::fixed)
fuente
Simplifica la respuesta aceptada
Ejemplo simplificado:
Y obtendrás salida
Referencia:
std::fixed
std::setprecision
fuente
Tuve un problema con los enteros mientras quería un formato consistente.
Una reescritura para completar:
fuente
Tuve este problema similar en una competencia de codificación y así es como lo manejé. Establecer una precisión de 2 para todos los valores dobles
Primero agregue el encabezado para usar setprecision
#include <iomanip>
Luego agregando el siguiente código en nuestro principal
Salida:
Debe usar fijo para escribir 5.00, por eso, su salida no vendrá para 5.00.
Estoy agregando un breve enlace de video de referencia que es útil
fuente
Tienes que configurar el 'modo flotante' como fijo.
fuente
Para establecer 2 dígitos fijos después del punto decimal, use estos primero:
Luego imprima sus valores dobles.
Esto es un ejemplo:
fuente
fuente
con plantillas
similar para científico también, con una opción de ancho también (útil para columnas)
fuente
Solo un punto menor; pon lo siguiente en el encabezado
usando el espacio de nombres estándar;
luego
std :: cout << std :: fijo << std :: setprecision (2) << d;
se simplifica a
cout << fijo << setprecision (2) << d;
fuente
using namespace std;
por el simple hecho de entender por qué lo está haciendo.Este es un ejemplo usando una matriz.
fuente