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 を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。