float

読み:フロート
外語:float 英語
品詞:名詞

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

目次

実数型変数の型の一つ。

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

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

floatdoublelong double

とされている。

仕様

実装にもよるが、IEEE 754単精度(binary32)に対応させるものが多い。

符号部1ビット+指数部8ビット+仮数部23ビット(実質24ビット)で、指数に+127のゲタをはかせるバイアス方式、基数2の32ビット長である。

有効桁数は10進数表現で7桁程度。

符号

floatは浮動小数点形式で値を扱うため、整数型と異なり、常に符号ありで処理される。

したがって、signed/unsignedによる符号の有無の指定は無効で、エラーになる。

内部動作

floatの「速度」については、実装により様々であることから、諸説飛び交っている。一般的なx86環境では、余程おかしなコンパイラーを使わない限り、floatとdoubleは同じ速度で処理される。

通常、内部では、floatをdoubleや、あるいはlong doubleなどに逐一変換はしていない。

x86系のFPU(x87)に限って言えば、fldcw命令とfstcw/fnstcwでFPU制御レジスターを変更することで浮動小数点数の丸めのモードの切り替えが可能で、ビット8-9の2ビット(PC=精度制御)で、24ビット、53ビット、64ビットが選択できる。

従って、逐一変換作業はないため、演算速度については、変わらないか、またはそのビット長に応じたものとなる。

C/C++

利用法

printfでは%fなどで表わす。

直定数の接尾辞(サフィックス)は、fまたはFである。

マクロ定数

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)

Java

Javaでは、float型の直定数(リテラル)は、サフィックスにfまたはFを付けて表わす。

float a = 1.2f;

Javaの場合、サフィックスを付けずに実数を記述するとdouble型となり、また大きな値を小さな変数に代入しようとするとエラーとなるため、サフィックスを付けない実数をそのままfloat型変数に代入することが出来ない。

用語の所属
数値表現
浮動小数点
関連する用語
単精度
double
long double

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club