__float80
読み:アンダースコア-アンダースコア-フロートはちじゅう
外語:__float80

 CおよびC++における非標準の変数型で、80ビット長の浮動小数点数を宣言する。
目次

概要
 実数型変数の型の一つ。x87(x86のFPU)の変数長である長倍精度の実数を宣言する、実装独自の変数型である。
 GCC 4.6以降でこの変数型に対応している。
 実装上は、次の関係が成り立つ。
 floatdoublelong 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である。

再検索