Cout удваивается без переменных резки - PullRequest
0 голосов
/ 12 декабря 2011

Вот некоторый "псевдо" код C ++

double var = 5.5;
cout << var << endl;
double var2 = 6.0;
cout << var2 << endl;

5.5
6

Проблема в том, что некоторый код может ожидать, что он равен 6.0.Есть ли у кого-то идея, как изменить выходной поток.

Хорошо, вот пример кода, который я попробовал

 double t = 6.0;
  while (t > 0.1) {
    t = t - 0.1;
    cout << setprecision(2) << t << endl;
  }

Вывод

5.9
5.8
...
5.2
5.1
5
4.9
4.8
4.7

Ответы [ 2 ]

4 голосов
/ 12 декабря 2011

Используйте std::setprecision вместе с std::fixed:

std::cout << std::fixed << std::setprecision(1) << var2 << std::endl;

См. Демо: http://ideone.com/Arz85

Только std::setprecision(1) не будет работать. Вы также должны использовать std::fixed.

Не забудьте включить это:

#include <iomanip>

Полагаю, вы написали using namespace std в своем коде. Если так, то не делай этого. Напишите полностью уточненные имена, такие как std::cout вместо cout. Смотрите эти темы:

0 голосов
/ 12 декабря 2011

Используйте флаги ios_base, взгляните на ссылку C ++ .

...