Repolode
fastfloat

fastfloat/fast_float

Header-only библиотека C++ для быстрого и точного разбора строк в float, double и целые числа; drop-in-реализация from_chars.

Звёзды
2,134
Форки
200
Открытые issues
29
Последний коммит
5 дней назад

Что это?

fast_float — header-only библиотека C++, реализующая функции from_chars в стиле C++17 для типов float, double и целых чисел. Она преобразует десятичные строки ASCII, например "1.3e10", в двоичные числа с точным округлением по IEEE, включая округление к ближайшему чётному. Реализация не генерирует исключений и не выделяет память.

Помимо стандартного интерфейса библиотека позволяет задавать собственный разделитель дробной части, поддерживает числа в стиле Fortran и строгие грамматики JSON и JavaScript. Она также принимает данные в UTF-16 и UTF-32, поддерживает типы float фиксированной ширины и может использоваться на этапе компиляции в C++20.

Проект рассчитан на C++11 и работает с Visual Studio, macOS, Linux и FreeBSD на 32- и 64-разрядных системах с прямым и обратным порядком байтов. Его можно подключить через CMake, CPM, Conan, Homebrew или как файл с единственным заголовком.

Ключевые возможности

  • 01Разбирает float и double с точным округлением к ближайшему чётному.
  • 02Разбирает знаковые и беззнаковые целые числа в системах счисления, например, с основаниями 2, 10 и 16.
  • 03Сообщает об ошибках через std::errc, не генерируя исключений и не выделяя память.
  • 04Поддерживает грамматики JSON, JavaScript и Fortran, а также грамматики с пользовательским разделителем дробной части.
  • 05Принимает данные в ASCII, UTF-8, UTF-16 и UTF-32.
  • 06Подключается как header-only библиотека или как файл с единственным заголовком.

Сценарии использования

  • Разбор больших объёмов числового текста в движках баз данных и конвейерах обработки данных.
  • Чтение чисел в парсерах JSON или JavaScript, которым необходима строгая проверка грамматики.
  • Добавление быстрого преобразования чисел в проекты на C++ с версией C++11 или новее.
  • Разбор чисел в CSV-файлах или логах, когда важна скорость.

Быстрый старт

  1. 1

    Скопируйте каталог fast_float в путь include вашего проекта и подключите заголовочный файл

Что важно знать

  • Поддерживается только десятичный ввод; шестнадцатеричные строки не разбираются.
  • Тип long double не поддерживается.
  • Предполагается, что режим округления чисел с плавающей точкой установлен на округление к ближайшему.

Темы

Частые вопросы

Что такое fast_float?
Header-only библиотека C++ для быстрого и точного разбора строк в float, double и целые числа; drop-in-реализация from_chars. fast_float — header-only библиотека C++, реализующая функции from_chars в стиле C++17 для типов float, double и целых чисел. Она преобразует десятичные строки ASCII, например "1.3e10", в двоичные числа с точным округлением по IEEE, включая округление к ближайшему чётному. Реализация не генерирует исключений и не выделяет память.
fast_float можно использовать бесплатно? Какая у него лицензия?
fast_float распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
fast_float всё ещё поддерживается?
Активно поддерживается. Последний коммит в fast_float — 19 окт. 2026 г..
Для чего можно использовать fast_float?
Разбор больших объёмов числового текста в движках баз данных и конвейерах обработки данных. Чтение чисел в парсерах JSON или JavaScript, которым необходима строгая проверка грамматики. Добавление быстрого преобразования чисел в проекты на C++ с версией C++11 или новее. Разбор чисел в CSV-файлах или логах, когда важна скорость.
Как установить fast_float?
Скопируйте каталог fast_float в путь include вашего проекта и подключите заголовочный файл
Где скачать fast_float?
Исходный код и инструкции по установке — на GitHub: https://github.com/fastfloat/fast_float

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Luanti (ранее Minetest) — бесплатный игровой движок с открытым исходным кодом для создания воксельных игр и игры в них с поддержкой модов на Lua.

13,8 тыс.2,5 тыс.C++OtherОбновлён 19 часов назад