Есть два места, в которых точность играет роль:
- точность самого значения
- точность выходного потока
Вы можете получить вывод с желаемой точностью, только если оба значения value и достаточно точны.
В вашем случае вычисленное значение не кажетсяоднако, проблема заключается в том, что точность потока по умолчанию составляет всего пять цифр, т. е. независимо от того, насколько точна ваша двойная величина, поток останавливается после пяти цифр, округляя последнюю соответственно. Поэтому вам нужно увеличить точность потока до требуемых девяти цифр:
std::cout << std::setprecision(9);
// or alternatively:
std::cout.precision(9);
Точность сохраняется до тех пор, пока не будет установлена новая, в отличие, например, от std::setw
, которая применяется только для следующего значения.