GeezerVison is showing cpprefjp.github.io — cfloat - cpprefjp C++日本語リファレンス
最終更新日時:
2026年08月14日 15時05分52秒 (JST)
Akira Takahashi
が更新
履歴
編集
<cfloat>
cfloat
<cfloat>ヘッダでは、浮動小数点数に関連する定数値マクロを定義する。これは、C言語の標準ライブラリ<float.h>と同じである。
フリースタンディング
このヘッダは、フリースタンディング処理系でも使用できる。本ヘッダが提供する全ての機能がフリースタンディング処理系で使用可能である。
浮動小数点数 $x$ は以下のようにモデル化される。
$$x = sb^e\sum^p_{k=1}f_kb^{-k},\qquad e_{\rm min} \le e \le e_{\rm max}$$
各パラメータは以下の通り。
$$
\begin{array}{ll}
s&\text{符号($\pm 1$)}\\
b&\text{指数表現の基数(1 より大きい整数)}\\
e&\text{指数(最小 $e_{\rm min}$ 最大 $e_{\rm max}$ の整数)}\\
p&\text{精度(基数 $b$ での仮数部の桁数)}\\
f_k&\text{$b$ より小さい非負整数(仮数部の有効数字)}\\
\end{array}
$$
浮動小数点型で表される値としては、ゼロと $f_1 \gt 0$ である正規化数の他に、$e = e_{\rm min}$ かつ $f_1 = 0$ である非正規化数(subnormal numbers)、$e \gt e_{\rm min}$ かつ $f_1 = 0$ である正規化されていない数(unnormalized numbers)、および、浮動小数点数ではない無限大や NaN 等が含まれているかもしれない(実装によっては含まれていないかもしれない)。
NaN とは非数(Not-a-Number)を表し、ほとんど全ての演算で浮動小数点例外 を起こさず結果に伝播する quiet NaN(quiet:静かな)と、演算のオペランドに使用されると浮動小数点例外 を引き起こす signaling NaN(signaling:信号を発する)がある。
ゼロと浮動小数点数ではない値(無限大や NaN 等)には符号があるかもしれない(実装によっては無いかもしれない)。
本ヘッダで提供される整数値を表すマクロは、FLT_ROUNDS を除いて #if プリプロセッサディレクティブに使用可能な定数式である。
丸め
基数
浮動小数点の評価方法
桁数
マクロ
説明
対応バージョン
FLT_DIG
floatで正確に表現可能な10進数の最大の桁数。 上記モデルでは、$b$ が $10$ の累乗の場合、$p \log_{10} b$、それ以外の場合、$\lfloor (p - 1)\log_{10} b\rfloor$
DBL_DIG
doubleで正確に表現可能な10進数の最大の桁数。 上記モデルでは、$b$ が $10$ の累乗の場合、$p \log_{10} b$、それ以外の場合、$\lfloor (p - 1)\log_{10} b\rfloor$
LDBL_DIG
long doubleで正確に表現可能な10進数の最大の桁数。 上記モデルでは、$b$ が $10$ の累乗の場合、$p \log_{10} b$、それ以外の場合、$\lfloor (p - 1)\log_{10} b\rfloor$
FLT_DECIMAL_DIG
floatの数値を10進数で正確に表すのに必要な有効数字の桁数。 上記モデルでは、$b$ が $10$ の累乗の場合、$p \log_{10} b$、それ以外の場合、$\lceil 1 + p \log_{10} b\rceil$
C++17
DBL_DECIMAL_DIG
doubleの数値を10進数で正確に表すのに必要な有効数字の桁数。 上記モデルでは、$b$ が $10$ の累乗の場合、$p \log_{10} b$、それ以外の場合、$\lceil 1 + p \log_{10} b\rceil$
C++17
LDBL_DECIMAL_DIG
long doubleの数値を10進数で正確に表すのに必要な有効数字の桁数。 上記モデルでは、$b$ が $10$ の累乗の場合、$p \log_{10} b$、それ以外の場合、$\lceil 1 + p \log_{10} b\rceil$
C++17
DECIMAL_DIG
精度が一番高い浮動小数点型の数値を10進数で正確に表すのに必要な有効数字の桁数。 上記モデルでは、$p_{\rm max}$ を精度が一番高い浮動小数点型の $p$ とすると、$b$ が $10$ の累乗の場合、$p_{\rm max} \log_{10} b$、それ以外の場合、$\lceil 1 + p_{\rm max}\log_{10} b\rceil$
C++11 C++26で非推奨
FLT_MANT_DIG
floatを基数 FLT_RADIX で表現した際の仮数部の桁数。 上記モデルでは、$p$
DBL_MANT_DIG
doubleを基数 FLT_RADIX で表現した際の仮数部の桁数。 上記モデルでは、$p$
LDBL_MANT_DIG
long doubleを基数 FLT_RADIX で表現した際の仮数部の桁数。 上記モデルでは、$p$
機械イプシロン
マクロ
説明
対応バージョン
FLT_EPSILON
floatにおける、$1$ と $1$ より大きい最小の数との差。(機械イプシロン) 上記モデルでは、$b^{1-p}$
DBL_EPSILON
doubleにおける、$1$ と $1$ より大きい最小の数との差。(機械イプシロン) 上記モデルでは、$b^{1-p}$
LDBL_EPSILON
long doubleにおける、$1$ と $1$ より大きい最小の数との差。(機械イプシロン) 上記モデルでは、$b^{1-p}$
非正規化数
無限大とNaN
マクロ
説明
対応バージョン
INFINITY
float型の正の無限大
C++26で<cfloat>に追加
NAN
float型のquiet NaN
C++26で<cfloat>に追加
FLT_SNAN
float型のシグナルNaN
C++26
DBL_SNAN
double型のシグナルNaN
C++26
LDBL_SNAN
long double型のシグナルNaN
C++26
バージョン情報
マクロ
説明
対応バージョン
__STDC_VERSION_FLOAT_H__
<cfloat>が提供するC標準ライブラリ機能のバージョン (202311L)
C++26
最大値
マクロ
説明
対応バージョン
FLT_MAX
floatの最大の有限値。 上記モデルでは、$(1-b^{-p})b^{e_{\rm max}}$
DBL_MAX
doubleの最大の有限値。 上記モデルでは、$(1-b^{-p})b^{e_{\rm max}}$
LDBL_MAX
long doubleの最大の有限値。 上記モデルでは、$(1-b^{-p})b^{e_{\rm max}}$
FLT_MAX_10_EXP
$10$ の $n$ 乗が、floatの有限の値として表現可能であるような、最大の整数値 $n$。 上記モデルでは、$\lfloor\log_{10} ((1-b^{-p})b^{e_{\rm max}})\rfloor$
DBL_MAX_10_EXP
$10$ の $n$ 乗が、doubleの有限の値として表現可能であるような、最大の整数値 $n$。 上記モデルでは、$\lfloor\log_{10} ((1-b^{-p})b^{e_{\rm max}})\rfloor$
LDBL_MAX_10_EXP
$10$ の $n$ 乗が、long doubleの有限の値として表現可能であるような、最大の整数値 $n$。 上記モデルでは、$\lfloor\log_{10} ((1-b^{-p})b^{e_{\rm max}})\rfloor$
FLT_MAX_EXP
FLT_RADIX の $n - 1$ 乗が、floatの有限の値として表現可能であるような、最大の整数値 $n$。 上記モデルでは、$e_{\rm max}$
DBL_MAX_EXP
FLT_RADIX の $n - 1$ 乗が、doubleの有限の値として表現可能であるような、最大の整数値 $n$。 上記モデルでは、$e_{\rm max}$
LDBL_MAX_EXP
FLT_RADIX の $n - 1$ 乗が、long doubleの有限の値として表現可能であるような、最大の整数値 $n$。 上記モデルでは、$e_{\rm max}$
最小値
マクロ
説明
対応バージョン
FLT_MIN
floatの正の正規化数のうち最小のもの。 上記モデルでは、$b^{e_{\rm min} - 1}$
DBL_MIN
doubleの正の正規化数のうち最小のもの。 上記モデルでは、$b^{e_{\rm min} - 1}$
LDBL_MIN
long doubleの正の正規化数のうち最小のもの。 上記モデルでは、$b^{e_{\rm min} - 1}$
FLT_TRUE_MIN
floatの正の最小値
C++17
DBL_TRUE_MIN
doubleの正の最小値
C++17
LDBL_TRUE_MIN
long doubleの正の最小値
C++17
FLT_MIN_10_EXP
$10$ の $n$ 乗がfloatの正の正規化数であるような最小の負の整数値 $n$。 上記モデルでは、$\lceil\log_{10} b^{e_{\rm min} - 1}\rceil$
DBL_MIN_10_EXP
$10$ の $n$ 乗がdoubleの正の正規化数であるような最小の負の整数値 $n$。 上記モデルでは、$\lceil\log_{10} b^{e_{\rm min} - 1}\rceil$
LDBL_MIN_10_EXP
$10$ の $n$ 乗がlong doubleの正の正規化数であるような最小の負の整数値 $n$。 上記モデルでは、$\lceil\log_{10} b^{e_{\rm min} - 1}\rceil$
FLT_MIN_EXP
FLT_RADIX の $n - 1$ 乗がfloatの正規化数として表現可能な最小の負の整数値 $n$。 上記モデルでは、$e_{\rm min}$
DBL_MIN_EXP
FLT_RADIX の $n - 1$ 乗がdoubleの正規化数として表現可能な最小の負の整数値 $n$。 上記モデルでは、$e_{\rm min}$
LDBL_MIN_EXP
FLT_RADIX の $n - 1$ 乗がlong doubleの正規化数として表現可能な最小の負の整数値 $n$。 上記モデルでは、$e_{\rm min}$
参照