我想从stringstream获取一个数字并将其设置为5位有效数字。我该怎么做呢?到目前为止,这是我设法提出的:
double a = 34.34566535
std::stringstream precisionValue;
precisionValue.precision(6) << a << std::endl;
然而,这不是编译。感谢。
答案 0 :(得分:11)
它无法编译,因为ios_base::precision()
返回streamsize
(它是一个整数类型)。
您可以使用stream manipulators:
precisionValue << std::setprecision(6) << a << std::endl;
您需要加入<iomanip>
。
答案 1 :(得分:5)
std::stringstream::precision()
返回streamsize
,而不是对流本身的引用,如果要对<<
运算符进行排序,则需要该引用。这应该有效:
double a = 34.34566535;
std::stringstream precisionValue;
precisionValue.precision(6);
precisionValue << a << std::endl;
答案 2 :(得分:3)
precision
成员函数返回当前精度,而不是对stringstream的引用,因此您无法像在片段中那样链接调用。
precisionValue.precision(6);
precisionValue << a;
std::cout << precisionValue.str() << std::endl;
或者使用setprecision
IO操纵器来链接呼叫:
precisionValue << setprecision(6) << a;
std::cout << precisionValue.str() << std::endl;
答案 3 :(得分:2)
您可以使用标题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();
}