Вычислить остаток, используя модульную арифметику с плавающей точкой
#include <math.h>double fmod( double x,double y );float fmodf( float x,float y );long double fmodl( long double x,long double y );
libm
Функции fmod() и fmodf() вычисляют остаток от операции x (mod y) в виде числа с плавающей точкой, который является остатком от x / y, даже если частное x / y не представимо.
Остаток, x - (i × y), для некоторого целочисленного i при котором, если y не равен нулю, результат имеет тот же знак, что x и значение, меньшее чем значение .
Для корректного значения, которое может вызвать ошибку underflow, эти функции возвращают 0.0
. Возвращаемым значением при y равным нулю является NaN. Возвращаемым значением при x равным бесконечности является NaN.
![]() | В случае возникновения ошибки, эти функции возвращают 0 , который также может быть и достоверным математическим результатом. Если вам необходимо проверить, возникла ли ошибка, установите errno в 0 , вызовите функцию, и затем снова проверьте errno. Эти функции не изменяют errno в случае отсутствия ошибок. |
#include <stdio.h>#include <math.h>#include <stdlib.h>int main( void ){printf( "%f\n", fmod( 4.5, 2.0 ) );printf( "%f\n", fmod( -4.5, 2.0 ) );printf( "%f\n", fmod( 4.5, -2.0 ) );printf( "%f\n", fmod( -4.5, -2.0 ) );return (EXIT_SUCCESS);}
Код генерирует следующий вывод:
$ ./a.out 0.500000 -0.500000 0.500000 -0.500000
ANSI, POSIX 1003.1
ceil(), div(), fabs(), floor()
Предыдущий раздел: Описание API математической библиотеки