c++ boost lexical_cast double to string

Posted

技术标签:

【中文标题】c++ boost lexical_cast double to string【英文标题】:c++ 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 是如何溜进来的…… 【参考方案1】:

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

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

【讨论】:

这也是我最初的直觉,但这里只明确使用了doubles(没有floats)。请参阅ideone.com/iVw2e 进行演示。

以上是关于c++ boost lexical_cast double to string的主要内容,如果未能解决你的问题,请参考以下文章

boost::lexical_cast<> 的语言环境不变保证

static_cast 与 boost::lexical_cast

boost::lexical_cast int 用零填充字符串

用boost::lexical_cast进行数值转换

一起学习Boost标准库--Boost.texical_cast&format库

boost库anyany_cast和lexical_cast