mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-13 17:20:55 +00:00
Fix bugs 9190 and 9193.
The conversion from floating point to string performed by boost:lexical_cast does not allow specifying a precision and, for example, values such as 0.9 are returned as 0.899999976. The standard C++ way for performing the conversion is using std::ostringstream which is exempt from this problem, even if less efficient. For the sake of accuracy, boost::lexical_cast is ditched in favor of the ostrinsgstream implementation. In C++11 another option would be using std::to_string, but I think it is not as efficient as the boost way and not worth implementing through #ifdef's.
This commit is contained in:
parent
edddfb99fc
commit
5f7948e5a5
@ -17,6 +17,7 @@
|
||||
#include <boost/lexical_cast.hpp>
|
||||
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
//needed for Mac OSX 10.5.2 Leopard
|
||||
#include <cstdlib>
|
||||
|
||||
@ -106,14 +107,18 @@ docstring convert<docstring>(long l)
|
||||
template<>
|
||||
string convert<string>(float f)
|
||||
{
|
||||
return lexical_cast<string>(f);
|
||||
std::ostringstream val;
|
||||
val << f;
|
||||
return val.str();
|
||||
}
|
||||
|
||||
|
||||
template<>
|
||||
string convert<string>(double d)
|
||||
{
|
||||
return lexical_cast<string>(d);
|
||||
std::ostringstream val;
|
||||
val << d;
|
||||
return val.str();
|
||||
}
|
||||
|
||||
|
||||
|
@ -87,6 +87,9 @@ What's new
|
||||
|
||||
- Fix potential bug spotted by cppcheck.
|
||||
|
||||
- Fix problems arising when converting floating point values to the
|
||||
corresponding string representation (bugs 9190 and 9193).
|
||||
|
||||
|
||||
* DOCUMENTATION AND LOCALIZATION
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user