frexp, frexpf, frexpl

Pobiera mantissa i wykładnik liczby zmiennoprzecinkowych.

Składnia

double frexp(
   double x,
   int *expptr
);
float frexpf(
   float x,
   int * expptr
);
long double frexpl(
   long double x,
   int * expptr
);
#define frexpl(X, INT_PTR) // Requires C11 or higher
float frexp(
   float x,
   int * expptr
);  // C++ only
long double frexp(
   long double x,
   int * expptr
);  // C++ only

Parametry

x
Wartość zmiennoprzecinkowa.

expptr
Wskaźnik do przechowywanego wykładnika liczby całkowitej.

Wartość zwracana

frexp zwraca mantissa. Jeśli x wartość to 0, funkcja zwraca wartość 0 zarówno dla mantissa, jak i wykładnika. Jeśli expptr parametr ma NULLwartość , wywoływana jest nieprawidłowa procedura obsługi parametrów zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, ta funkcja ustawia errno wartość EINVAL i zwraca wartość 0.

Uwagi

Funkcja frexp dzieli wartość zmiennoprzecinkową (x) na mantissa (m) i wykładnik (n), tak aby wartość m bezwzględna wartości jest większa lub równa 0,5 i mniejsza niż 1,0 imx = * 2.n Wykładnik n liczby całkowitej jest przechowywany w lokalizacji wskazywane przez expptr.

Język C++ umożliwia przeciążenie, dzięki czemu można wywoływać przeciążenia klasy frexp. W programie języka C, chyba że używasz <makra tgmath.h> do wywołania tej funkcji, frexp zawsze przyjmuje double wskaźnik i int i zwraca wartość double.

Jeśli używasz makra <tgmath.h>frexp() , typ argumentu określa, która wersja funkcji jest zaznaczona. Aby uzyskać szczegółowe informacje, zobacz Typy ogólne matematyczne .

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Wymagania

Function Wymagany nagłówek
frexp, frexpf, frexpl <math.h>
frexp Makro <tgmath.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

// 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

Zobacz też

Obsługa obliczeń matematycznych i zmiennoprzecinkowych
ldexp
modf, modff, modfl