Разбить число с плавающей точкой на мантиссу и целую степень двойки
#include <math.h>double frexp( double value,int *exp );float frexpf( float value,int *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
Предыдущий раздел: Описание API математической библиотеки