Прототип функции 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