remquo
、 remquof
、 remquol
2 つの整数値の剰余を計算し、符号と商のおおよその大きさを持つ整数値をパラメーターに格納します。
構文
double remquo( double numer, double denom, int* quo );
float remquof( float numer, float denom, int* quo );
long double remquol( long double numer, long double denom, int* quo );
#define remquo(X, Y, INT_PTR) // Requires C11 or higher
float remquo( float numer, float denom, int* quo ); /* C++ only */
long double remquo( long double numer, long double denom, int* quo ); /* C++ only */
パラメーター
numer
分子。
denom
分母。
quo
符号と商の近似値を持つ値を格納する整数へのポインター。
戻り値
remquo
は、x
/ y
の浮動小数点の剰余を返します。 y
の値が 0.0 の場合、remquo
は簡易な NaN を返します。 printf
ファミリによる静かな NaN の表現については、「printf
、_printf_l
、wprintf
、_wprintf_l
」を参照してください。
解説
remquo
関数は、x
/ y
の浮動小数点剰余f
を計算します。この場合、x
= n
* y
+ f
n
は整数で、f
はx
と同じ符号を持ち、f
の絶対値はy
の絶対値より小さくなります。
C++ ではオーバーロードが可能であるため、remquo
または float
の値を受け取って返す long double
のオーバーロードを呼び出すことができます。 C プログラムでは、 <tgmath.h> マクロを使用してこの関数を呼び出す場合を除き、 remquo
は常に 2 つの double
引数を受け取り、 double
を返します。
<tgmath.h>remquo()
マクロを使用する場合は、引数の型によって、この関数のどのバージョンが選択されるかが決定されます。 詳細については、「ジェネリック型数値演算」を参照してください。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
要件
機能 | 必須ヘッダー (C) | 必須ヘッダー (C++) |
---|---|---|
remquo 、 remquof 、 remquol |
<math.h> | <cmath> または <math.h> |
remquo マクロ |
<tgmath.h> |
互換性の詳細については、「互換性」を参照してください。
例
// crt_remquo.c
// This program displays a floating-point remainder.
#include <math.h>
#include <stdio.h>
int main( void )
{
double w = -10.0, x = 3.0, z;
int quo = 0;
z = remquo(w, x, &quo);
printf("The remainder of %.2f / %.2f is %f\n", w, x, z);
printf("Approximate signed quotient is %d\n", quo);
}
The remainder of -10.00 / 3.00 is -1.000000
Approximate signed quotient is -3
関連項目
数値演算と浮動小数点のサポート
ldiv
, lldiv
imaxdiv
fmod
, fmodf
remainder
、 remainderf
、 remainderl