c将lexical cast 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

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

谢谢,

解决方法

这与boost :: lexical_cast无关,但它带有double的内部表示:

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

相关文章

首先GDB是类unix系统下一个优秀的调试工具, 当然作为debug代...
1. C语言定义1个数组的时候, 必须同时指定它的长度.例如:int...
C++的auto关键字在C+⬑新标准出来之前基本...
const关键字是用于定义一个不该被改变的对象,它的作用是告诉...
文章浏览阅读315次。之前用C语言编过链表,这几天突然想用C+...
文章浏览阅读219次。碰到问题就要记录下来,防止遗忘吧。文章...