C語言frexp()函數:提取浮點數的尾數和指數部分

2020-07-16 10:04:50
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