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, danmx = * 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

Function 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

Baca juga

Dukungan matematika dan titik mengambang
ldexp
modf, modff, modfl