frexp
, frexpf
, frexpl
Kayan noktalı bir sayının mantisini ve üssünü alır.
Sözdizimi
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
Parametreler
x
Kayan nokta değeri.
expptr
Depolanan tamsayı üssü işaretçisi.
Dönüş değeri
frexp
mantis döndürür. 0 ise x
, işlev hem mantis hem de üs için 0 döndürür. ise expptr
NULL
, geçersiz parametre işleyicisi Parametre doğrulama bölümünde açıklandığı gibi çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlev olarak EINVAL
ayarlanır errno
ve 0 döndürür.
Açıklamalar
İşlev kayan frexp
nokta değerini (x
) bir mantis (m
) ve üssüne ()n
böler; böylece mutlak değeri m
0,5'ten büyük veya buna eşit ve 1,0'dan küçük vem
x
= * 2n
olur. Tamsayı üssü n
tarafından expptr
işaret edilen konumda depolanır.
C++ aşırı yüklemeye izin verir, böylece aşırı yüklemelerini frexp
çağırabilirsiniz. C programında, bu işlevi çağırmak için tgmath.h makrosunu <kullanmadığınız sürece, frexp
her zaman bir double
ve işaretçisi int
alır ve döndürürdouble
.>
tgmath.h>frexp()
makroyu <kullanırsanız, işlevin hangi sürümünün seçili olduğunu bağımsız değişkenin türü belirler. Ayrıntılar için bkz . Tür genel matematik .
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
İşlev | Gerekli başlık |
---|---|
frexp , frexpf , frexpl |
<math.h> |
frexp Makro |
<tgmath.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// 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