Home C&C++函数库 c++ 语法 程序源码 Linux C库

fmod

函数  <cmath> <ctgmath>

C90 double fmod (double numer, double denom);
C99 double fmod (double numer , double denom);
float fmodf (float numer , float denom);
long double fmodl (long double numer, long double denom);
C++98 double fmod (double numer , double denom);
float fmod (float numer , float denom);
long double fmod (long double numer, long double denom);
C++11 double fmod (double numer , double denom);
float fmod (float numer , float denom);
long double fmod (long double numer, long double denom);
double fmod (Type1 numer , Type2 denom);       // additional overloads

取余
返回number除以denom的余数(浮点数):

fmod = numer - tquot * denom

其中tquot是:number除以denom的商。
类似的函数,remainder,返回不同的结果,其商(按除数的值,看示例)四舍五入为最接近的整数。

注:这两个函数区别是:
   fmod的被除数只要不能被整除,就把多出来的做余数(我们常规用法);

   remainder的商则是四舍五入.例如, 4.0 / 3.0 ,商为 1.0 余 1.0 ; 5.0 / 3.0, 商为1余2,2除3四舍五入为1,则最后表达式结果商为 2.0 余 -1.0 .

C99 头文件<tgmath.h> 提供了该函数的类型泛型宏版本。
C++11 这个头文件(<cmath>) 为其他算术类型组合(Type1和Type2)提供了额外的重载: 这些重载在计算前将其实参转换为double,除非至少有一个实参是 long double类型(在这种情况下,两个实参都被转换为long double类型)。

☲  参数


numer
被除数
denom
除数

☉  返回值



余数.
如果denom为零,函数可能返回零或导致域错误(取决于库的实现)。
C90(C++98) 如果出现域错误,全局变量errno将被设置为 EDOM.
C99(C++11) 如果出现域错误:
-并且math_errhandling设置了MATH_ERRNO: 全局变量errno设置为EDOM.
-并且math_errhandling设置了MATH_ERREXCEPT: 触发FE_INVALID.

☣  示例



/* fmod example */
#include <stdio.h>      /* printf */
#include <math.h>       /* fmod */

int main ()
{
  printf ( "fmod of 5.3 / 2 is %f\n", fmod (5.3,2) );
  printf ( "fmod of 18.5 / 4.2 is %f\n", fmod (18.5,4.2) );
  return 0;
}

输出:
fmod of 5.3 / 2 is 1.300000
fmod of 18.5 / 4.2 is 1.700000

🍄  另请参阅



fabs 绝对值(function )
remainder 计算余数(IEC 60559)(function )
modf 分成小数部分和整数部分 (function )

联系我们 免责声明 关于CandCplus 网站地图