2012-07-26 26 views
4

对于下面的代码段C++提高词汇投双串

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 

这是怎么发生的?显然,我在寻找后者的输出表示,而不是前者。

感谢,

+0

@NicolBolas编辑,不确定1怎么溜进去...... – 2012-07-26 08:58:46

回答

1

这有什么好做了boost :: lexical_cast的,但它与双的内部表示走来:

看到这个答案也是: C++ internal representation of double/float

+0

这也是我最初的直觉,但是这里只明确地使用了'double'(没有'float's)。请参阅http://ideone.com/iVw2e进行演示。 – Johnsyweb 2012-07-26 09:15:34