https://github.com/joinframework/dconv
Double conversion
https://github.com/joinframework/dconv
conversion floating-point grisu2
Last synced: 3 months ago
JSON representation
Double conversion
- Host: GitHub
- URL: https://github.com/joinframework/dconv
- Owner: joinframework
- License: mit
- Created: 2021-05-17T07:37:54.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2025-12-04T23:43:00.000Z (6 months ago)
- Last Synced: 2025-12-07T22:10:12.617Z (6 months ago)
- Topics: conversion, floating-point, grisu2
- Language: C++
- Homepage: https://joinframework.net
- Size: 455 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dconv
[](https://github.com/joinframework/dconv/actions?query=workflow%3Atest+branch%3Amain)
[](https://github.com/joinframework/dconv/actions?query=workflow%3Asecurity+branch%3Amain)
[](https://app.codacy.com/gh/joinframework/dconv/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[](https://app.codacy.com/gh/joinframework/dconv/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_coverage)
[](https://codecov.io/gh/joinframework/dconv)
[](https://coveralls.io/github/joinframework/dconv?branch=main)
[](https://joinframework.github.io/dconv/index.html)
[](https://github.com/joinframework/dconv/releases/latest)
[](https://github.com/joinframework/dconv/blob/main/LICENSE)
**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](https://florian.loitsch.com/publications).
String to double conversion uses a fast-path implementation based on the **Eisel-Lemire** algorithm, with automatic fallback to strtod when inputs exceed the range or precision safely handled by the fast algorithm.
The code is far from being perfect so any help to improve speed, accuratie, code quality etc... is welcome.
## Dependencies
To install **dconv** dependencies do this:
```bash
sudo apt update && sudo apt install libgtest-dev libgmock-dev
```
## Download
To download the latest source do this:
```bash
git clone https://github.com/mrabine/dconv.git
```
## Configuration
To configure **dconv** do this:
```bash
cmake -B build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DDCONV_ENABLE_TESTS=ON -DDCONV_ENABLE_COVERAGE=ON
```
## Build
To build **dconv** do this:
```bash
cmake --build build --config Debug
```
## Usage
The printing API can be used this way:
```cpp
#include
char value [25];
char* end = dconv::dtoa (value, -2.22507e-308);
```
The parsing API can be used this way:
```cpp
#include
double value;
char* end = dconv::atod ("-2.22507e-308", value);
```
## License
[MIT](https://choosealicense.com/licenses/mit/)