C語言 frexp() 函數用來提取一個浮點數(小數)的指數部分和尾數部分。
浮點數在記憶體中儲存時被分成三部分,分別是符號位、指數部分和尾數部分,不了解的讀者請猛擊《小數在記憶體中是如何儲存的,揭秘諾貝爾獎級別的設計(長篇神文)》。
double frexp(double x, int *exponent) 將提取浮點數 x 的尾數部分和指數部分,指數部分被存入引數 exponent 中,尾數部分被放入返回值中,最終 x = mantissa * 2 ^ exponent(mantissa 表示尾數)。
標頭檔案:math.h
語法/原型:
double frexp(double x, int *exponent)
引數說明:
-
x:要被計算的浮點數。
-
exponent:一個指向指數部分的指標。
返回值:浮點數 x 的尾數部分。
【範例】使用C語言 frexp() 函數提取浮點數 19.625 的指數部分和尾數部分。
#include <stdio.h>
#include <math.h>
int main()
{
int exp;
double mant = frexp(19.625, &exp);
printf("mant: %.10lfnexp:%dn", mant, exp);
return 0;
}
執行結果:
mant: 0.6132812500
exp:5