Repolode
fastfloat

fastfloat/fast_float

纯头文件的 C++ 库,快速且精确地把字符串解析为 float、double 和整数,实现 from_chars 接口。

Star
2,134
Fork
200
未关闭 Issue
29
最近提交
5天前

这是什么?

fast_float 是一个纯头文件的 C++ 库,实现了类似 C++17 标准的 from_chars 函数,可解析 float、double 以及各种整数类型。它能把 "1.3e10" 这类 ASCII 十进制字符串精确转换为二进制数值,遵循 IEEE 舍入规则(包括向偶数舍入),且不抛出异常、不分配内存。

除标准接口外,库还支持自定义小数点符号、Fortran 风格数字,以及严格的 JSON 或 JavaScript 语法检查。它也能处理 UTF-16、UTF-32 输入,支持定宽浮点类型,并可在 C++20 下进行编译期求值。

项目兼容 C++11,可在 Visual Studio、macOS、Linux 和 FreeBSD 上使用,覆盖 32 位与 64 位、大端与小端系统。可通过 CMake、CPM、Conan、Homebrew 引入,也可直接使用单头文件版本。

核心功能

  • 01解析 float 和 double 时结果精确,遵循向偶数舍入规则。
  • 02支持二进制、十进制、十六进制等进制的整数解析。
  • 03通过 std::errc 返回错误,不抛出异常,也不分配内存。
  • 04提供 JSON、JavaScript、Fortran 以及自定义小数点的解析模式。
  • 05支持 ASCII、UTF-8、UTF-16 和 UTF-32 输入。
  • 06可作为纯头文件库或单头文件使用。

适用场景

  • 在数据库引擎或数据管道中批量解析数字文本。
  • 为需要严格语法校验的 JSON 或 JavaScript 解析器提供数字转换。
  • 在支持 C++11 及以上版本的 C++ 项目中加入高速数字解析。
  • 处理 CSV 或日志文件中的数值字段,对解析速度有要求的场景。

快速上手

  1. 1

    将 fast_float 目录复制到项目的包含路径中,并引入头文件

使用前须知

  • 仅支持十进制输入,不解析十六进制字符串。
  • 不支持 long double 类型。
  • 假定浮点舍入模式为就近舍入(FE_TONEAREST)。

标签

常见问题

fast_float 是什么?
纯头文件的 C++ 库,快速且精确地把字符串解析为 float、double 和整数,实现 from_chars 接口。 fast_float 是一个纯头文件的 C++ 库,实现了类似 C++17 标准的 from_chars 函数,可解析 float、double 以及各种整数类型。它能把 "1.3e10" 这类 ASCII 十进制字符串精确转换为二进制数值,遵循 IEEE 舍入规则(包括向偶数舍入),且不抛出异常、不分配内存。
fast_float 可以免费使用吗?用的什么许可证?
fast_float 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
fast_float 还在维护吗?
活跃维护中。fast_float 最近一次提交是在 2026年10月19日。
fast_float 适合用来做什么?
在数据库引擎或数据管道中批量解析数字文本。 为需要严格语法校验的 JSON 或 JavaScript 解析器提供数字转换。 在支持 C++11 及以上版本的 C++ 项目中加入高速数字解析。 处理 CSV 或日志文件中的数值字段,对解析速度有要求的场景。
fast_float 怎么安装和运行?
将 fast_float 目录复制到项目的包含路径中,并引入头文件
在哪里获取 fast_float?
源代码和安装说明在 GitHub 上:https://github.com/fastfloat/fast_float

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目