将数字从stringstream转换为具有设定精度的字符串

pro*_*oob 4 c++ precision significant-digits

我想从stringstream获取一个数字并将其设置为5位有效数字.我该怎么做呢?到目前为止,这是我设法提出的:

double a = 34.34566535
std::stringstream precisionValue;
precisionValue.precision(6) << a << std::endl;
Run Code Online (Sandbox Code Playgroud)

但是,这不是编译.谢谢.

jro*_*rok 11

它不会编译因为ios_base::precision()返回streamsize(它是一个整数类型).

您可以使用流操纵器:

precisionValue << std::setprecision(6) << a << std::endl;
Run Code Online (Sandbox Code Playgroud)

你需要包括<iomanip>.


Zyx*_*000 5

std::stringstream::precision()返回a streamsize,而不是对流本身的引用,如果要对<<运算符进行排序,则需要返回该引用.这应该工作:

double a = 34.34566535;
std::stringstream precisionValue;
precisionValue.precision(6);
precisionValue << a << std::endl;
Run Code Online (Sandbox Code Playgroud)