C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のremainder()関数の使い方と動作を解説

C++のremainder()関数とは

この記事では、C++のremainder()メソッドの機能について詳しく解説します。remainder()関数は、分子を分母で割った浮動小数点の剰余(余り)を計算するために使用されます。

remainder(x, y)は、以下のような式で表されます。

remainder(x, y) = x − rquote * y

ここで、rquoteはx/yの値であり、最も近い整数値に丸められた値です。つまり、通常の剰余演算とは異なり、結果が−y/2〜+y/2の範囲に収まるように計算されるのが特徴です。

この関数は、double型、float型、long double型の2つの引数を受け取り、引数として与えられたものと同じ型の剰余を返します。第1引数が分子、第2引数が分母に相当します。

remainder()とfmod()の違い

なお、C++には似たような関数としてfmod()がありますが、両者は丸め方に違いがあります。fmod()は商をゼロ方向へ切り捨てるのに対し、remainder()は商を最も近い整数に丸めるため、結果が負になる場合があります。

サンプルコード

以下のコードは、remainder()関数の基本的な使用例です。正の数同士、負の数を含むケース、そして分母が0の場合の3つのパターンを確認できます。

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double x = 14.5, y = 4.1;
    double res = remainder(x, y);
    cout << "Remainder of " << x << "/" << y << " is: " << res << endl;

    x = -34.50;
    y = 4.0;
    res = remainder(x, y);
    cout << "Remainder of " << x << "/" << y << " is: " << res << endl;

    x = 65.23;
    y = 0;
    res = remainder(x, y);
    cout << "Remainder of " << x << "/" << y << " is: " << res << endl;
}

実行結果

Remainder of 14.5/4.1 is: -1.9
Remainder of -34.5/4 is: 1.5
Remainder of 65.23/0 is: nan

結果の解説

  • 14.5 / 4.1 の場合: 商は約3.54で、最も近い整数である4に丸められるため、14.5 − 4 × 4.1 = −1.9 となります。
  • -34.5 / 4 の場合: 商は-8.625で、最も近い整数である-9に丸められるため、-34.5 − (-9) × 4 = 1.5 となります。
  • 分母が0の場合: ゼロ除算となるため、結果はNaN(Not a Number)が返されます。

このように、remainder()関数を使うことで、IEEE 754規格に準拠した剰余計算を簡単に行うことができます。数値計算や信号処理など、正確な剰余演算が必要な場面で活用するとよいでしょう。

  1. C++で質素数(Frugal Number)を判定する方法【サンプルコード付き】

    この記事では、正の整数 N が与えられたときに、その数が質素数(Frugal Number)であるかどうかを判定するプログラムを C++ で作成する方法を解説します。 質素数とは? 質素数(FRUGAL NUMBER)とは、その数自身の桁数が、素因数分解による表現の桁数よりも厳密に大きい数のことです。 例:625 の場合 625 を素因数分解すると 54 となります。 625 自身の桁数:3 桁 54 の表現の桁数:2 桁 3 は 2 よりも厳密に大きいため、625 は質素数です。 最初のいくつかの質素数:125、128、243、256、343、512、625 など 問題を理解するための具

  2. C++で五胞体数(ペンタトープ数)を求める方法

    五胞体数とは? 五胞体数(ペンタトープ数)は、パスカルの三角形の第5の対角線上に現れる数列として知られています。この数列を定義するには、パスカルの三角形に少なくとも5つの数が必要となるため、数列の最初の数はパスカルの三角形の第4行である 1 4 6 4 1 から始まります。 本チュートリアルでは、n番目の五胞体数を求める方法を解説します。まずは具体的な例を見てみましょう。 入力 : 1出力 : 1入力 : 4出力 : 35 以下の図から出力を確認できます。 この問題は数列に関するものなので、解法ではまず数列のパターンを見つけることから始めます。 解法のアプローチ このプログラムでは、数列の