Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/11/2012, 03:52
reethok
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años, 6 meses
Puntos: 8
Pregunta Valor double sale con 6 decimales y otro con 4, aún usando fixed y setprecision!

Ahm... bueno, la verdad es que no tengo ni idea de por qué pasa, les dejo el código:

Código C++:
Ver original
  1. #include <iostream>
  2. using std::cout;
  3. using std::cin;
  4. using std::endl;
  5. using std::fixed;
  6.  
  7. #include <iomanip>
  8. using std::setprecision;
  9.  
  10. #include "Gasolina.h"
  11.  
  12. void Gasolina::empezar()
  13. {
  14.     int km;
  15.     int kmt = 0;
  16.     int lt;
  17.     int ltt = 0;
  18.     double kpla;
  19.     double kpl;
  20.  
  21.     cout << "Escriba los kilometros usados (-1 para salir): ";
  22.     cin >> km;
  23.  
  24.     while(km > 0)
  25.     {
  26.         cout << "Escriba los litros: ";
  27.         cin >> lt;
  28.         if(lt > 0)
  29.         {
  30.             kmt += km;
  31.             ltt += lt;
  32.             kpla = static_cast<double>(km) / lt;
  33.             kpl = static_cast<double>(kmt) / ltt;
  34.  
  35.             cout << "KPL en este abastecimiento: " << setprecision(6) << kpla <<                fixed << endl; // Aquí (?)
  36.             cout << "Total KPL: " << setprecision(6) << kpl << fixed << endl; // y aquí.
  37.             cout << "\n";
  38.  
  39.             cout << "Escriba los kilometros usados (-1 para salir): ";
  40.             cin >> km;
  41.         }
  42.         else
  43.             cout << "Valor incorrecto." << endl;
  44.     }
  45. }

Bueno, ahora sí.

Ingreso datos:

Kilometros usados: 287
Litros: 13

y por alguna razón en la salida me da:

KPL en este abastecimiento: 22.0769
Total KPL: 22.076923

Como verán, un double me lo muestra con 4 decimales y el otro con 6...

¿Qué he hecho mal? Ojalá alguien me explique.

Saludos!