Udostępnij za pośrednictwem


ldexp, ldexpf, ldexpl

Mnoży liczbę zmiennoprzecinkową przez całkowitą moc dwóch.

Składnia

double ldexp(
   double x,
   int exp
);
float ldexpf(
   float x,
   int exp
);
long double ldexpl(
   long double x,
   int exp
);
#define ldexp(X, INT) // Requires C11 or higher

float ldexp(
   float x,
   int exp
);  // C++ only
long double ldexp(
   long double x,
   int exp
);  // C++ only

Parametry

x
Wartość zmiennoprzecinkowa.

exp
Wykładnik liczby całkowitej.

Wartość zwracana

Jeśli ldexp funkcja zakończy się pomyślnie, funkcja zwróci wartość x * 2exp . Po przepełnieniu i w zależności od znaku xldexp funkcja zwraca wartość +/- HUGE_VAL; errno wartość jest ustawiona na ERANGEwartość .

Aby uzyskać więcej informacji na temat errno możliwych wartości zwracanych przez błąd, zobaczerrno , _doserrno, _sys_errlisti _sys_nerr.

Uwagi

Ponieważ język C++ umożliwia przeciążenie, można wywołać przeciążenia ldexp tego typu float lub long double typu. W programie języka C, chyba że używasz <makra tgmath.h> do wywołania tej funkcji, ldexp zawsze przyjmuje double element i int i zwraca wartość double.

Jeśli używasz makra <tgmath.h>ldexp() , 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

Procedura Nagłówek języka C Nagłówek języka C++
ldexp, ldexpf, ldexpl <math.h> <cmath>
ldexp Makro <tgmath.h>

Aby uzyskać informacje o zgodności, zobacz Zgodność.

Przykład

// crt_ldexp.c

#include <math.h>
#include <stdio.h>

int main( void )
{
   double x = 4.0, y;
   int p = 3;

   y = ldexp( x, p );
   printf( "%2.1f times two to the power of %d is %2.1f\n", x, p, y );
}

Wynik

4.0 times two to the power of 3 is 32.0

Zobacz też

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