modf(), modff()

Разбить число на целую и дробную части

Прототип:

#include <math.h>
double modf( double value,
double *iptr );
float modff( float value,
float *iptr );

Аргументы:

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

Библиотека:

libm

Описание:

Функции modf() и modff() разбивают заданное значение на целую и дробную части, каждая из которых имеет тот же знак, что и аргумент. Данные функции хранят целую часть в виде double в области памяти, на которую указывает iptr.

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

Дробная часть value со знаком.


Note: В случае возникновения ошибки, эти функции возвращают 0, который также может быть и достоверным математическим результатом. Если вам необходимо проверить, возникла ли ошибка, установите errno в 0, вызовите функцию, и затем снова проверьте errno. Эти функции не изменяют errno в случае отсутствия ошибок.

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main( void )
{
double integral_value, fractional_part;
fractional_part = modf( 4.5, &integral_value );
printf( "%f %f\n", fractional_part, integral_value );
fractional_part = modf( -4.5, &integral_value );
printf( "%f %f\n", fractional_part, integral_value );
return (EXIT_SUCCESS);
}

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

$ ./a.out 0.500000 4.000000 -0.500000 -4.000000

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

ANSI, POSIX 1003.1

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

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

frexp(), ldexp()




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