我想從stringstream獲取一個數字並將其設置爲5位有效數字。我該怎麼做呢?到目前爲止,這是我設法提出的:將數字從stringstream轉換爲具有設置精度的字符串
double a = 34.34566535
std::stringstream precisionValue;
precisionValue.precision(6) << a << std::endl;
但是,這不是編譯。謝謝。
我想從stringstream獲取一個數字並將其設置爲5位有效數字。我該怎麼做呢?到目前爲止,這是我設法提出的:將數字從stringstream轉換爲具有設置精度的字符串
double a = 34.34566535
std::stringstream precisionValue;
precisionValue.precision(6) << a << std::endl;
但是,這不是編譯。謝謝。
std::stringstream::precision()
返回streamsize
,不流本身,如果要排序<<
運營商所需要的參考。這應該工作:
double a = 34.34566535;
std::stringstream precisionValue;
precisionValue.precision(6);
precisionValue << a << std::endl;
它不會編譯,因爲ios_base::precision()
回報streamsize
(這是一個整體型)。
您可以使用stream manipulators:
precisionValue << std::setprecision(6) << a << std::endl;
你需要包括<iomanip>
。
您可以使用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();
}
的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;
作品。大!謝謝 :) – programmingNoob