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

remainder

函数  <cmath> <ctgmath>

C99 double remainder (double numer , double denom);
float remainderf (float numer , float denom);
long double remainderl (long double numer, long double denom);
C++11 double remainder (double numer , double denom);
float remainder (float numer , float denom);
long double remainder (long double numer, long double denom);
double remainder (Type1 numer , Type2 denom);       // additional overloads

取余 (IEC 60559)
返回number /denom的余数(浮点数):

remainder = numer - tquot * denom

其中rquot是:number /denom的商,四舍五入到最接近的整数值
类似的函数fmod则返回相同的结果,只是商舍入趋零(舍入为零)。 函数remquo的行为与这个函数相同,但是它另外提供了对所使用的中间商值的访问。
注:fmod和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
除数

☉  返回值



余数.
如果余数为0,则其符号为number的符号。
如果denom为零,函数可能返回零或导致域错误(取决于库的实现)

C90(C++98) 如果出现域错误,全局变量errno将被设置为 EDOM.
C99(C++11) 如果出现域错误:
-并且math_errhandling设置了MATH_ERRNO: 全局变量errno设置为EDOM.
-并且math_errhandling设置了MATH_ERREXCEPT: 触发FE_INVALID.

☣  示例



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

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

输出:
remainder of 5.3 / 2 is -0.700000
remainder of 18.5 / 4.2 is 1.700000

🍄  另请参阅



fmod 计算余数(IEC 60559)function )
fabs 计算绝对值(function )
round 就近舍入(function )

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