c ++将lexical_cast提升为字符串

时间:2012-07-26 06:03:06

标签: c++ string boost double

以下代码

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

为什么会这样?显然,我正在寻找后者的输出表示,而不是前者。

谢谢,

1 个答案:

答案 0 :(得分:1)

这与boost :: lexical_cast无关,但它伴随着double的内部表示:

还可以看到这个答案: C++ internal representation of double/float