double val = 0.1;
std::stringstream ss;
ss << val;
std::string strVal= ss.str();
Visual Studio デバッガーでvalは、値は 0.10000000000000001 です (0.1 を表すことができないため)。がvalstringstream を使用して変換されると、strValは と等しくなり"0.1"ます。ただし、boost::lexical_cast を使用すると、結果strValは"0.10000000000000001".
別の例は次のとおりです。
double val = 12.12305000012;
Visual valStudio では 12.123050000119999 と表示され、stringstream とデフォルトの精度 (6) を使用すると 12.1231 になります。12.12305(...) ではない理由がよくわかりません。
デフォルトの精度はありますか、または stringstream には、正確に表現できない double 値を変換する特定のアルゴリズムがありますか?
ありがとう。