float |
辞書:電算用語の基礎知識 プログラミング仕様編 (PTPROGS) |
読み:フロート |
外語:float |
品詞:名詞 |
|
概要 |
実数型変数の型の一つ。
C/C++の場合は単精度(概ね4バイト≒32ビット)の浮動小数点を表わす。
但し、言語仕様上はビット長は保証されておらず、
float ≦ double ≦ long 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個のマクロ定数が定義されるようになった。これを利用すると、その環境での長さを得ることができる。
Java |
Javaでは、float型の直定数(リテラル)は、サフィックスにfまたはFを付けて表わす。
float a = 1.2f;
Javaの場合、サフィックスを付けずに実数を記述するとdouble型となり、また大きな値を小さな変数に代入しようとするとエラーとなるため、サフィックスを付けない実数をそのままfloat型変数に代入することが出来ない。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |