c++ - quitar - Imprimir el número correcto de decimales con cout
programacion c decimales (11)
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 <iomanip>
, puede usar std::fixed
y std::setprecision
Aquí hay un ejemplo
#include <iostream>
#include <iomanip>
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 <iostream>
#include <iomanip>
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
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 <iostream>
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;
}
Simplifica la respuesta aceptada
Ejemplo simplificado:
#include <iostream>
#include <iomanip>
int main()
{
double d = 122.345;
std::cout << std::fixed << std::setprecision(2) << d;
}
Y obtendrás salida
122.34
Referencia:
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;
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;
Tuve este problema similar en una competencia de codificación 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 <iomanip>
Luego agregando el siguiente código en nuestra página principal
double answer=5.9999;
double answer2=5.0000;
cout<<setprecision(2)<<fixed;
cout <<answer << endl;
cout <<answer2 << endl;
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
Tuve un problema con los enteros mientras quería un formato coherente.
Una reescritura para completar:
#include <iostream>
#include <iomanip>
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
}
este es un ejemplo usando una matriz.
cout<<setprecision(4)<<fixed<<m[i][j]
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)
#include<stdio.h>
int main()
{
double d=15.6464545347;
printf("%0.2lf",d);
}