【C++】remquo()関数とは?剰余と商を同時に取得する方法を解説
C++のremquo()関数は、分子を分母で割った浮動小数点の剰余を計算すると同時に、その商を引数として渡されたポインタに格納する関数です。分母がゼロの場合は、NaN(Not a Number:非数)を返します。
remquo()はfmod()やremainder()とよく似た関数ですが、剰余だけでなく商の情報も一緒に取得できる点が大きな特徴です。
remquo()の構文
float remquo(float var1, float var2, int* var3);
各引数の意味は以下の通りです。
- var1 ― 分子の値を格納する変数。
- var2 ― 分母の値を格納する変数。
- var3 ― 計算された商を格納するためのint型ポインタ変数。
remquo()の使用例
ここでは、28.8を3.5で割った場合の剰余と商をremquo()を使って求めています。
#include <iostream>
#include <cmath>
using namespace std;
int main() {
float x = 28.8;
float y = 3.5;
int z;
float res = remquo(x, y, &z);
cout << "The value : " << res;
return 0;
}
実行結果
このプログラムを実行すると、次のような出力が得られます。
The value : 0.799999
出力結果から、28.8 ÷ 3.5 の剰余が約0.8であることがわかります。また、商は第3引数のポインタzに格納されます。なお、浮動小数点演算の特性上、結果が0.799999のように表示される点には注意が必要です。
-
C++で二重積分を計算するプログラム|シンプソン1/3則による数値積分の実装
変数xの下限・上限、変数yの下限・上限、そしてx・yそれぞれの刻み幅(ステップ幅)が与えられたとき、二重積分を数値的に計算し、その結果を表示するのが本記事のテーマです。 入出力の例 入力: xの刻み幅 = 1.2 yの刻み幅 = 0.54 xの下限 = 1.3 xの上限 = 2.1 yの下限 = 1.0 yの上限 = 2.1 出力: double integration is : 2.1 計算のアプローチ 本プログラムでは、以下の手順で二重積分を求めます。 xとyの上限・下限の値に加えて、x・yそれぞれの刻み幅を入力として受け取ります。 二重積分の計算にはシンプソン1/3則(Simpson
-
C++でfloatとdoubleを比較する方法|許容誤差(EPSILON)を使った実装例
C++においてfloat型やdouble型などの浮動小数点数を比較する方法は、最終的に何を実現したいかによって異なります。浮動小数点数は内部で2進数の近似値として表現されるため、「==」演算子による単純な等価比較では意図しない結果になることがあります。そこで一般的には、許容できる誤差(イプシロン)を設定し、その範囲内であれば同じ値とみなす手法が用いられます。 理論面に深入りしすぎず、すぐに使える関数が必要で、多少の計算誤差が許容できる場合は、以下のような関数が便利です。 サンプルコード #include<iostream> using namespace std; // 許容でき