frexp
, , frexpf
frexpl
Mendapatkan mantissa dan eksponen dari angka floating-point.
Sintaks
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
Parameter
x
Nilai floating-point.
expptr
Pointer ke eksponen bilangan bulat tersimpan.
Nilai hasil
frexp
mengembalikan mantissa. Jika x
adalah 0, fungsi mengembalikan 0 untuk mantissa dan eksponen. Jika expptr
adalah NULL
, handler parameter yang tidak valid dipanggil seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi ini diatur errno
ke EINVAL
dan mengembalikan 0.
Keterangan
Fungsi memecah frexp
nilai floating-point (x
) menjadi mantissa (m
) dan eksponen (n
), sehingga nilai m
absolut lebih besar dari atau sama dengan 0,5 dan kurang dari 1,0, danm
x
= * 2.n
Eksponen n
bilangan bulat disimpan di lokasi yang diarahkan oleh expptr
.
C++ memungkinkan kelebihan beban, sehingga Anda dapat memanggil kelebihan beban frexp
. Dalam program C, kecuali Anda menggunakan makro tgmath.h> untuk memanggil fungsi ini, frexp
selalu mengambil double
penunjuk dan int
dan mengembalikan double
.<
Jika Anda menggunakan <makro tgmath.h>frexp()
, jenis argumen menentukan versi fungsi mana yang dipilih. Lihat Matematika generik jenis untuk detailnya.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Persyaratan
Fungsi | Header yang diperlukan |
---|---|
frexp , , frexpf frexpl |
<matematika.h> |
frexp makro |
<tgmath.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// 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
Lihat juga
Dukungan matematika dan titik mengambang
ldexp
modf
, , modff
modfl