float

読み:フロート
外語:float
発音:flóut
品詞:名詞

C/C++/Javaなどの予約語の一つ。

実数型変数の型の一つ。

C/C++の場合は単精度(概ね4バイト≒32ビット)の浮動小数点を表わす。

但し、言語仕様上はビット長は保証されておらず、

floatdoublelong double

とされている。

マクロ定数

ANSI Cの時代より、float.hにおいて以下の13個のマクロ定数が定義されるようになった。これを利用すると、その環境での長さを得ることができる。

FLT_DIG
10進数精度 (例えば6)
FLT_EPSILON
1.0+FLT_EPSILON != 1.0 となる最小値 (例えば1.192092896e-07F)
FLT_GUARD
算演算結果においてガードビットを用いるかどうか (例えば0)
FLT_MANT_DIG
仮数ビット長 (例えば24)
FLT_MAX
最大値 (例えば3.402823466e+38F)
FLT_MAX_10_EXP
最大10進指数 (例えば38)
FLT_MAX_EXP
最大2進指数 (例えば128)
FLT_MIN
最小値 (例えば1.175494351e-38F)
FLT_MIN_10_EXP
最小10進指数 (例えば-37)
FLT_MIN_EXP
最小2進指数 (例えば-125)
FLT_NORMALIZE
浮動小数点の値を正規化するかどうか (例えば0)
FLT_RADIX
指数の基数 (例えば2)
FLT_ROUNDS
丸めモード (例えば1)

昔のCPUは、浮動小数演算対応と言っても対応するビット長が短く、float相当しかハードウェア的に対応していなかった。従ってfloatにも存在意義はあった。

しかし昨今のプロセッサは内部処理(実数演算)を倍精度で行なっているので、floatを使うと余計な変換操作が必要となり、逆に速度的に不利となる場合もある。

K&Rの頃は本当に内部でdouble型に変換された後に実行されていて、ANSI C以降でfloatのまま処理できるようになったが、しかしもはやfloatを使うメリットはメモリの節約程度しか無さそうである。