Share via


frexp

更新 : 2007 年 11 月

浮動小数点数の仮数部および指数部を取得します。

double frexp(
   double x,
   int *expptr 
);
float frexp(
   float x,
   int * expptr
);  // C++ only
long double frexp(
   long double x,
   int * expptr
);  // C++ only

パラメータ

  • x
    浮動小数点値。

  • expptr
    指数部を示す整数の格納場所を指すポインタ。

戻り値

frexp は、仮数部を返します。x が 0 の場合は、仮数部と指数部の両方に 0 を返します。expptr が NULL の場合は、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラが呼び出されます。実行の継続が許可された場合、この関数は errno を EINVAL に設定し、0 を返します。

解説

frexp 関数は、浮動小数点値 (x) を仮数部 (m) と指数部 (n) に分割します。m の絶対値が 0.5 以上で 1.0 未満になり、x = m*2n になるようにします。指数部の整数 n は、expptr が指す場所に格納されます。

C++ ではオーバーロードが可能であるため、frexp のオーバーロードを呼び出すことができます。C プログラムでは、frexp は常に倍精度浮動小数点数と整数を受け取り、倍精度浮動小数点数を返します。

必要条件

関数

必須ヘッダー

frexp

<math.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

// crt_frexp.c
// This program calculates frexp( 16.4, &n )
// then displays y and n.
 

#include <math.h>
#include <stdio.h>

int main( void )
{
   double x, y;
   int n;

   x = 16.4;
   y = frexp( x, &n );
   printf( "frexp( %f, &n ) = %f, n = %d\n", x, y, n );
}

frexp( 16.400000, &n ) = 0.512500, n = 5

.NET Framework の相当するアイテム

適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

参照

浮動小数点サポート

ldexp

modf、modff