frexp() — 浮動小数点値の分離
フォーマット
#include <math.h>
double frexp(double x, int *expptr);
言語レベル
ANSI
スレッド・セーフ
はい
説明
frexp() 関数は浮動小数点値 x を小数部の項 m と指数部の項 n に分けます。 これは、x=m*2 n のように行われ、m の絶対値は 0.5 以上かつ 1.0 未満、または 0 です。frexp() 関数は整数の指数 n を expptr が指すロケーションに格納します。
戻り値
frexp() 関数は小数部の項 m を戻します。x が 0 の場合、frexp() は小数部指数部の両方に対して 0 を戻します。小数部には引数 x と同じ符号が付きます。frexp() 関数の結果は範囲エラーを持つことができません。
例
次の例は x の浮動小数点値 16.4 をその小数部 0.5125 と指数部 5 に分けます。小数部を y に、指数部を n に格納します。
#include <math.h>
#include <stdio.h>
int main(void)
{
double x, m;
int n;
x = 16.4;
m = frexp(x, n);
printf("The mantissa is %lf and the exponent is %d¥n", m, n);
}
/******************* Output should be similar to: ***************
The mantissa is 0.512500 and the exponent is 5
*/