__float80
読み:アンダースコア-アンダースコア-フロートはちじゅう
外語:__float80
CおよびC++における非標準の変数型で、80ビット長の浮動小数点数を宣言する。
概要
実数型変数の型の一つ。x87(x86のFPU)の変数長である長倍精度の実数を宣言する、実装独自の変数型である。
GCC 4.6以降でこの変数型に対応している。
実装上は、次の関係が成り立つ。
float ≦ double ≦ long double ≒ __float80 ≦ __float128
特徴
仕様
符号部1ビット+指数部15ビット+仮数部64ビット(実質65ビット)で、指数に+16383のゲタをはかせるバイアス方式、基数2の80ビット長である。
有効桁数は10進数表現で19桁程度。
仮数部
80ビットの中に収められる仮数部の長さは64ビットだが、実際にはこの精度は65ビットとされている。
これは、0/NaN/∞などを除いて、正規化により「1.」の部分を暗黙的に定義することでビット数を稼ぎ、都合65ビットとしているためである。この「1.」は、「暗黙の整数ビット」や「implicit」などと呼ばれている。
「1.」が存在するが、0は0で別途、指数部=仮数部=0の場合に0として定義されており、表現することが可能である。
符号
__float80は浮動小数点形式で値を扱うため、整数型と異なり、常に符号ありで処理される。
したがって、signed/unsignedによる符号の有無の指定は無効で、エラーになる。
仕様
x86のGCC実装では、__float80とlong doubleは等価である。
printfでは%Lfなどで表わす。
直定数の接尾辞(サフィックス)は、wまたはWである。
再検索