在现实应用中,总有一些情形需要把 IEEE 754 浮点数转换成字符串再转换回来…… 这时使用一个快速正确的转换方法就很重要了。fmtlib::fmt 中就使用了 Dragonbox 这个算法。
C++参考实现: https://github.com/jk-jeon/dragonbox
作者是 UCSD 的数学系博士生 Junekey Jeon。
Homebrew formula 中自带的测试:
test.cpp
:
#include <dragonbox/dragonbox_to_chars.h>
#include <iostream>
int main()
{
double number = 123.456;
char buffer[25];
jkj::dragonbox::to_chars(number, buffer);
std::cout << buffer << std::endl;
return 0;
}
CMakeLists.txt
:
cmake_minimum_required(VERSION 3.0)
project(TestDragonbox)
find_package(dragonbox REQUIRED)
add_executable(test_dragonbox test.cpp)
target_link_libraries(test_dragonbox PRIVATE dragonbox::dragonbox_to_chars)
运行:
cmake -S . -B build
cmake --build build
输出 1.23456E2