Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 later
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, , frexpffrexpl |
<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, , modffmodfl