Проблема следующая: при преобразовании вещественных типов в строку, функция какого-то хрена дописывает к числу много нулей и единицу в последнем знаке. Мне кажется, что такое поведение функции не соответствует ее предназначению. Что это, баг, или я не учел какой-то нюанс?
Вот пример:
#include <iostream>
#include <boost/lexical_cast.hpp>
using namespace std;
int main()
{
string str;
double d = 3.14;
str = boost::lexical_cast<string>(d);
cout << d << endl << str << endl;
return 0;
}
Вывод программы:
3.14
3.14000000000000001
При преобразовании к типу float, количество нулей заметно сокращается.