Imprimir el número correcto de decimales con cout

Tengo una lista de valores float y quiero imprimirlos con 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?

(la setprecision no parece ayudar en esto).

Con , puede usar std::fixed y std::setprecision

Aquí hay un ejemplo

 #include  #include  int main() { double d = 122.345; std::cout < < std::fixed; std::cout << std::setprecision(2); std::cout << d; } 

Y obtendrás salida

 122.34 

Estuviste cerca, necesitas usar std :: fixed también, consulta http://www.cplusplus.com/reference/iostream/manipulators/fixed/

 #include  #include  int main(int argc, char** argv) { float testme[] = { 0.12345, 1.2345, 12.345, 123.45, 1234.5, 12345 }; std::cout < < std::setprecision(2) << std::fixed; for(int i = 0; i < 6; ++i) { std::cout << testme[i] << std::endl; } return 0; } 

productos:

 0.12 1.23 12.35 123.45 1234.50 12345.00 

setprecision(n) aplica al número entero, no a la parte fraccional. setiosflags(ios::fixed) usar el formato de punto fijo para aplicarlo a la parte fraccionaria: setiosflags(ios::fixed)

Simplifica la respuesta aceptada

Ejemplo simplificado:

 #include  #include  int main() { double d = 122.345; std::cout < < std::fixed << std::setprecision(2) << d; } 

Y obtendrás salida

 122.34 

Referencia:

  • std::fixed
  • std::setprecision

Tuve un problema con los enteros mientras quería un formato coherente.

Una reescritura para completar:

 #include  #include  int main() { // floating point formatting example double d = 122.345; cout < < std::fixed << std::setprecision(2) << d << endl; // Output: 122.34 // integer formatting example int i = 122; cout << std::fixed << std::setprecision(2) << double(i) << endl; // Output: 122.00 } 

Tienes que configurar el ‘modo flotante’ para arreglarlo.

 float num = 15.839; // this will output 15.84 std::cout < < std::fixed << "num = " << std::setprecision(2) << num << std::endl; 

Para establecer 2 dígitos fijos después del punto decimal, use estos primero:

 cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); 

Luego imprime tus valores dobles.

Esto es un ejemplo:

 #include  using std::cout; using std::ios; using std::endl; int main(int argc, char *argv[]) { cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); double d = 10.90; cout < < d << endl; return 0; } 

Tuve este problema similar en una competencia de encoding y así es como lo manejé. Establecer una precisión de 2 en todos los valores dobles

Primero agregando el encabezado para usar setprecision

#include

Luego agregando el siguiente código en nuestra página principal

  double answer=5.9999; double answer2=5.0000; cout<  

Salida:

 5.99 5.00 

Debes usar el método fijo para escribir 5.00, es por eso que tu salida no será de 5.00.

Un breve enlace de video de referencia que estoy agregando, que es útil

Solo un punto menor; poner lo siguiente en el encabezado

usando namespace std;

entonces

std :: cout < < std :: fixed << std :: setprecision (2) << d;

se simplifica a

cout < < fixed << setprecision (2) << d;

 #include int main() { double d=15.6464545347; printf("%0.2lf",d); } 

este es un ejemplo usando una matriz.

 cout<