Прототип функции frexp:
double frexp( double val, int * exp );
float frexp( float val, int * exp );
long double frexp( long double val, int * exp );
Заголовочный файл
| Название | Язык |
|---|---|
| math.h | С |
| cmath | С++ |
Описание
Функция определяет следующие значения: показатель степени (экспонента) и мантиссу.
Значение с плавающей точкой val равно мантиссе (значение с плавающей точкой в диапазоне [0,5;1,0), умноженной на основание двойки в степени exp:
x = significand * 2 exponent
Показатель степени (экспонента) хранится в месте, на которое указывает exp, а мантисса — значение, возвращаемое функцией. Если val равно нулю, обе части (мантисса и экспонента) равны нулю.
В Си, определён только один прототип, с типом данных double.
Параметры:
- val
Вещественное значение, для которого вычисляются мантисса и показатель степени двойки. - exp
Указатель на объект типаint, где будет сохранен показатель степени.
Возвращаемое значение
Двоичная мантисса значения val. Это значение является значением с плавающей точкой в интервале [0.5,1), которое после умножается на 2-ку, возведенную в степень ехр, что, в результате, дает val.
Пример: исходный код программы
// пример использования функции frexp
#include <iostream> // для оператора cout
#include <cmath> // для функции frexp
int main()
{
double param = 8.0, result;
int ex; // степень
result = frexp (param , &ex); // Двоичная мантисса значения val
std::cout << result << "* 2^"
<< ex << " = " << param << std::endl;
return 0;
}
Пример работы программы
CppStudio.com
0.5* 2^4 = 8