4

次のコードの場合

std::cout<<boost::lexical_cast<std::string>(2.34)<<std::endl

次の出力が得られます。

2.3399999999999999

一方、もし私がするなら

 double d = 2.34;
 std::stringstream ss;
 ss<<d;
 std::string s = ss.str();
 cout<<s<<endl;

次の出力が得られます。

 2.34

なぜこうなった ?明らかに、前者ではなく、後者の出力表現を探しています。

ありがとう、

4

1 に答える 1

1

これは boost::lexical_cast とは何の関係もありませんが、double の内部表現に伴います:

この回答も参照してください: double/float の C++ 内部表現

于 2012-07-26T06:19:18.393 に答える