4

stringstream から数値を取得し、有効数字を 5 桁に設定したいと思います。どうすればいいですか?これまでのところ、これは私が思いついたものです:

double a = 34.34566535
std::stringstream precisionValue;
precisionValue.precision(6) << a << std::endl;

ただし、これはコンパイルではありません。ありがとう。

4

4 に答える 4

11

ios_base::precision()返されるためコンパイルされませんstreamsize(整数型です)。

ストリーム マニピュレータを使用できます。

precisionValue << std::setprecision(6) << a << std::endl;

を含める必要があります<iomanip>

于 2012-09-10T15:35:07.553 に答える
6

std::stringstream::precision()は、ストリーム自体への参照ではなく、演算子streamsizeをシーケンスする場合に必要な を返します。<<これはうまくいくはずです:

double a = 34.34566535;
std::stringstream precisionValue;
precisionValue.precision(6);
precisionValue << a << std::endl;
于 2012-09-10T15:34:40.687 に答える
3

メンバー関数は、文字列ストリームへの参照ではなく、現在のprecision精度を返すため、スニペットで行ったように呼び出しを連鎖させることはできません。

precisionValue.precision(6);      
precisionValue << a;
std::cout << precisionValue.str() << std::endl;

または、setprecisionIO マニピュレータを使用して呼び出しを連鎖させます。

precisionValue << setprecision(6) << a;
std::cout << precisionValue.str() << std::endl;
于 2012-09-10T15:36:42.227 に答える
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();
}
于 2012-09-10T15:36:35.177 に答える