函数
<cmath> <ctgmath>

remquo

     double remquo  (double numer     , double denom     , int* quot);      float remquof (float numer      , float denom      , int* quot);long double remquol (long double numer, long double denom, int* quot);
     double remquo (double numer     , double denom     , int* quot);      float remquo (float numer      , float denom      , int* quot);long double remquo (long double numer, long double denom, int* quot);     double remquo (Type1 numer      , Type2 denom      , int* quot);  // additional overloads
计算余数和商
返回与 remainder 相同的值,但它还会将用于确定其结果的商内部存储在 quot 指向的对象中。

quot 指向的值包含与整数商 numer/denom 至少3位相等的同余模。

头文件 <tgmath.h> 提供了此函数的类型通用宏版本。
此头文件 (<cmath>) 中为其他算术类型 (Type1Type2) 的组合提供了额外的重载:这些重载在计算前会有效地将其参数转换为 double,除非至少有一个参数的类型是 long double(在这种情况下,两个参数都会被转换为 long double)。

参数

numer
带有商的分子部分的浮点值。
denom
带有商的分母部分的浮点值。
quot
指向一个对象的指针,其中用于确定余数的商作为 int 类型的值存储。

返回值

参数相除的余数。
如果此余数为零,其符号应与 x 相同;在这种情况下,存储在 quot 中的值是未指定的。
如果 denominator 为零,函数可能返回零或导致定义域错误(取决于库的实现)。

如果发生定义域错误
- 并且 math_errhandling 设置了 MATH_ERRNO:全局变量 errno 会被设置为 EDOM
- 并且 math_errhandling 设置了 MATH_ERREXCEPT:将引发 FE_INVALID

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* remquo example */
#include <stdio.h>      /* printf */
#include <math.h>       /* remquo */

int main ()
{
  double numer = 10.3;
  double denom = 4.5;
  int quot;
  double result = remquo (numer,denom,&quot);
  printf ("numerator: %f\n", numer);
  printf ("denominator: %f\n", denom);
  printf ("remainder: %f\n", result);
  printf ("quotient: %d\n", quot);
  return 0;
}

输出

numerator: 10.300000
denominator: 4.500000
remainder: 1.300000
quotient: 2


另见