dconv is a C++14 library for printing and parsing floating point numbers.
Double to string conversion is done using the Grisu2 algorithm, described by Florian Loitsch in its publication Printing Floating-Point Numbers Quickly and Accurately with Integers.
String to double conversion is done using a fast and simple (but not accurate!) approach and fallback to strtod if conversion can't be done the simplified way.
The code is far from being perfect so any help to improve speed, accuratie, code quality etc... is welcome.
To install dconv dependencies do this:
sudo apt update && sudo apt install libgtest-dev libgmock-devTo download the latest source do this:
git clone https://github.com/mrabine/dconv.gitTo configure dconv do this:
cmake -B build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DDCONV_ENABLE_TESTS=ON -DDCONV_ENABLE_COVERAGE=ONTo build dconv do this:
cmake --build build --config DebugThe printing API can be used this way:
#include <dconv/dtoa.hpp>
char value [25];
char* end = dconv::dtoa (value, -2.22507e-308);The parsing API can be used this way:
#include <dconv/atod.hpp>
double value;
char* end = dconv::atod ("-2.22507e-308", value);