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