stringstream から数値を取得し、有効数字を 5 桁に設定したいと思います。どうすればいいですか?これまでのところ、これは私が思いついたものです:
double a = 34.34566535
std::stringstream precisionValue;
precisionValue.precision(6) << a << std::endl;
ただし、これはコンパイルではありません。ありがとう。
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();
}