Как я печатаю двойное значение с судом использования полной точности?

Таким образом, я получил ответ на свой последний вопрос (я не знаю, почему я не думал об этом). Я печатал a double использование cout это было округлено, когда я не ожидал это. Как я могу сделать cout печать a double использование полной точности?

306
задан Jakub 16 October 2019 в 08:14
поделиться

5 ответов

Можно установить точность непосредственно на std::cout и использовать std::fixed спецификатор формата.

double d = 3.14159265358979;
cout.precision(17);
cout << "Pi: " << fixed << d << endl;

Вы можете #include <limits> для получения максимальной точности плавания или дважды.

#include <limits>

typedef std::numeric_limits< double > dbl;

double d = 3.14159265358979;
cout.precision(dbl::max_digits10);
cout << "Pi: " << d << endl;
366
ответ дан Bill the Lizard 23 November 2019 в 01:19
поделиться

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

существует setprecision (...) операция, но можно также установить другие вещи как ширина печати, и т.д.

Ищут суд в ссылке IDE.

1
ответ дан Uri 16 September 2019 в 23:13
поделиться

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

std::cout << std::setprecision (15) << 3.14159265358979 << std::endl;
65
ответ дан Campa 23 November 2019 в 01:19
поделиться

Вот то, что я использовал бы:

std::cout << std::setprecision (std::numeric_limits<double>::digits10 + 1)
          << 3.14159265358979
          << std::endl;

В основном предельный пакет имеет черты для всей сборки в типах.
Одна из черт для чисел с плавающей точкой (плавающий/двойной/длинный двойной) является атрибутом digits10. Это определяет точность (я забываю точную терминологию) числа с плавающей точкой в основе 10.

См.: http://www.cplusplus.com/reference/std/limits/numeric_limits.html
для получения дополнительной информации о других атрибутах.

23
ответ дан Martin York 23 November 2019 в 01:19
поделиться

Наиболее портативно...

#include <limits>

using std::numeric_limits;

    ...
    cout.precision(numeric_limits<double>::digits10 + 1);
    cout << d;
0
ответ дан 23 November 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: