对于下面的代码
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
为什么会这样?显然,我正在寻找后者的输出表示,而不是前者.
谢谢,
解决方法
这与boost :: lexical_cast无关,但它带有double的内部表示: