frexp(), frexpf()

Разбить число с плавающей точкой на мантиссу и целую степень двойки

Прототип:

#include <math.h>
double frexp( double value,
int *exp );
float frexpf( float value,
int *exp );

Аргументы:

value
Значение, которое вы хотите разбить на нормализованную дробь.
exp
Указатель на область памяти, где функция может хранить степень 2.

Библиотека:

libm

Описание:

Данные функции разбивают число с плавающей точкой на мантиссу и целую степень 2. Они сохраняют степень 2 в int, на которое указывает exp.

Возвращаемое значение:

x, такое, что x является переменной double со значением в диапазоне [0.5, 1] или 0, и value равен x, помноженный на 2 в степени exp. Если value равен 0, то обе части результата равны 0.

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main( void )
{
int expon;
double value;
value = frexp( 4.25, &expon );
printf( "%f %d\n", value, expon );
value = frexp( -4.25, &expon );
printf( "%f %d\n", value, expon );
return (EXIT_SUCCESS);
}

Код генерирует следующий вывод:

$ ./a.out 0.531250 3 -0.531250 3

Классификация:

ANSI, POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

ldexp(), modf()




Предыдущий раздел: Описание API математической библиотеки