Предотвратить научную запись в ostream при использовании << с двойным - PullRequest
32 голосов
/ 25 февраля 2010

Мне нужно не допустить, чтобы мой двойник печатался в научной записи в моем файле,

когда я делаю это

outfile << X;

Ответы [ 4 ]

34 голосов
/ 25 февраля 2010

Для настройки форматирования плавающих переменных вы можете использовать комбинацию setprecision(n), showpoint и fixed. Чтобы использовать параметризованные потоковые манипуляторы, такие как setprecision(n), вам необходимо включить библиотеку iomanip:

#include <iomanip>

setprecision(n): будет ограничивать плавающий вывод n местами, и после его установки он будет установлен до тех пор, пока вы явно не сбросите его для оставшейся части потока вывода.

fixed: обеспечит вывод всех чисел с плавающей запятой одинаковым образом. Поэтому, если ваша точность установлена ​​на 4 позиции, 6.2 и 6.20 будут выводиться как:

6.2000
6.2000

showpoint: заставит отображать десятичные части переменной с плавающей запятой, даже если она не установлена ​​явно. Например, 4 будет выводиться как:

4.0

Использование их всех вместе:

outfile << fixed << showpoint;
outfile << setprecision(4);
outfile << x;
6 голосов
/ 07 октября 2013

Все приведенные выше ответы были полезны, но никто не ответил прямо на вопрос.

outfile.setf(ios_base::fixed);
outfile << x;

Я нашел ответ по ссылке @moogs: http://www.cplusplus.com/reference/iostream/ios_base/fmtflags/

Вот демонстрационная программа: http://ideone.com/FMxRp1

6 голосов
/ 25 февраля 2010

Вот пример использования http://cplus.about.com/od/learning1/ss/clessontwo_4.htm

согласно вашему вопросу используйте

  std::cout << std::fixed << a << std::endl;
2 голосов
/ 25 февраля 2010

вы можете использовать флаги формата

http://en.cppreference.com/w/cpp/io/ios_base/fmtflags

...