【问题标题】:c++ boost lexical cast double to stringc++ boost lexical_cast double to string
【发布时间】:2012-07-26 06:03:05
【问题描述】:

下面这段代码

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

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

谢谢,

【问题讨论】:

  • @NicolBolas 已编辑,不确定 1 是如何溜进来的……

标签: c++ string boost double


【解决方案1】:

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

另请参阅此答案: C++ internal representation of double/float

【讨论】:

  • 这也是我最初的直觉,但这里只明确使用了doubles(没有floats)。请参阅ideone.com/iVw2e 进行演示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
  • 2011-10-19
相关资源
最近更新 更多