Repolode
fastfloat

fastfloat/fast_float

文字列から float、double、整数値を高速かつ正確に解析する、from_chars互換のヘッダーオンリーC++ライブラリ。

スター
2,134
フォーク
200
未解決の Issue
29
最終コミット
5 日前

これは何?

fast_floatは、float、double、整数型向けにC++17スタイルのfrom_chars関数を実装したヘッダーオンリーのC++ライブラリです。"1.3e10"のようなASCIIの10進数文字列を、round-to-evenを含むIEEEの正確な丸めで二進数に変換します。例外を投げず、メモリも確保しません。

標準インターフェースに加えて、小数点記号のカスタマイズ、Fortran形式の数値、JSONやJavaScriptの厳密な文法に対応するオプションを備えています。UTF-16とUTF-32の入力も受け付け、固定幅の浮動小数点型をサポートし、C++20ではコンパイル時にも使用できます。

C++11を対象とし、32ビットと64ビット、ビッグエンディアンとリトルエンディアンの各環境で、Visual Studio、macOS、Linux、FreeBSDから利用できます。CMake、CPM、Conan、Homebrew経由で導入できるほか、単一のヘッダーファイルとしても利用できます。

主な機能

  • 01floatとdoubleを解析し、正確な最近接偶数丸めの結果を返します。
  • 022、10、16などの基数で符号付き・符号なし整数型を解析します。
  • 03例外を投げたりメモリを確保したりせず、std::errcでエラーを通知します。
  • 04JSON、JavaScript、Fortranの文法と、小数点記号をカスタマイズした文法に対応します。
  • 05ASCII、UTF-8、UTF-16、UTF-32の入力を受け付けます。
  • 06ヘッダーオンリーライブラリまたは単一のヘッダーファイルとして利用できます。

ユースケース

  • データベースエンジンやデータパイプラインで、大量の数値テキストを解析する。
  • 厳密な文法チェックが必要なJSONやJavaScriptのパーサーで数値を読み取る。
  • C++11以降を対象とするプロジェクトに高速な数値変換を組み込む。
  • 速度が重要なCSVやログファイルから数値を解析する。

クイックスタート

  1. 1

    fast_float ディレクトリをプロジェクトの include パスにコピーし、ヘッダーをインクルードします

使う前に知っておきたいこと

  • 10進数の入力のみサポートされます。16進数の文字列は解析されません。
  • long double 型はサポートされていません。
  • 浮動小数点の丸めモードが最近接丸めに設定されていることを前提とします。

トピック

よくある質問

fast_float とは?
文字列から float、double、整数値を高速かつ正確に解析する、from_chars互換のヘッダーオンリーC++ライブラリ。 fast_floatは、float、double、整数型向けにC++17スタイルのfrom_chars関数を実装したヘッダーオンリーのC++ライブラリです。"1.3e10"のようなASCIIの10進数文字列を、round-to-evenを含むIEEEの正確な丸めで二進数に変換します。例外を投げず、メモリも確保しません。
fast_float は無料で使えますか?ライセンスは?
fast_float は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
fast_float は今もメンテナンスされていますか?
活発にメンテナンス中。fast_float の最終コミットは 2026年10月19日 です。
fast_float は何に使えますか?
データベースエンジンやデータパイプラインで、大量の数値テキストを解析する。 厳密な文法チェックが必要なJSONやJavaScriptのパーサーで数値を読み取る。 C++11以降を対象とするプロジェクトに高速な数値変換を組み込む。 速度が重要なCSVやログファイルから数値を解析する。
fast_float のインストール方法は?
fast_float ディレクトリをプロジェクトの include パスにコピーし、ヘッダーをインクルードします
fast_float はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/fastfloat/fast_float

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト