Я хотел бы получить число из stringstream и установить его на 5 значащих цифр. Как мне это сделать? До сих пор это то, что мне удалось придумать:
double a = 34.34566535
std::stringstream precisionValue;
precisionValue.precision(6) << a << std::endl;
Однако это не компилируется. Благодарю.
Это не компилируется, потому что ios_base::precision()
возвращается streamsize
(это цельный тип).
Ты можешь использовать ручные манипуляторы:
precisionValue << std::setprecision(6) << a << std::endl;
Вам нужно будет включить <iomanip>
,
std::stringstream::precision()
возвращает streamsize
, а не ссылка на сам поток, который требуется, если вы хотите упорядочить <<
операторы. Это должно работать:
double a = 34.34566535;
std::stringstream precisionValue;
precisionValue.precision(6);
precisionValue << a << std::endl;
precision
Функция-член возвращает текущую точность, а не ссылку на строковый поток, поэтому вы не можете связать вызовы так, как вы это сделали во фрагменте.
precisionValue.precision(6);
precisionValue << a;
std::cout << precisionValue.str() << std::endl;
Или используйте setprecision
IO манипулятор для цепочки вызовов:
precisionValue << setprecision(6) << a;
std::cout << precisionValue.str() << std::endl;
Ты можешь использовать std::setprecision
из заголовка <iomanip>
#include <string>
#include <sstream>
#include <iomanip>
#include <iostream>
int main()
{
double a = 34.34566535;
std::stringstream precisionValue;
precisionValue << std::setprecision(6);
precisionValue << a << std::endl;
std::cout << precisionValue.str();
}