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

C++のisfinite()関数とは?構文・戻り値・実例付きでわかりやすく解説

本記事では、C++のisfinite()関数について、その動作の仕組み、構文、そして具体的な使用例を詳しく解説します。

isfinite()関数とは

isfinite()は、<cmath>ヘッダーファイルに含まれる組み込み関数です。この関数は、引数として渡された数値が「有限(finite)」であるかどうかを判定し、その結果を返します。

ここでいう有限数とは、無限大(∞)でもNaN(Not a Number:非数)でもない浮動小数点数のことを指します。つまり、通常の計算可能な数値であればtrueが返されます。

構文

isfinite()関数は、引数の型に応じて以下のようにオーバーロードされています。

bool isfinite(float n);
bool isfinite(double n);
bool isfinite(long double n);

この関数が受け取るパラメータは1つだけです。nは、有限かどうかを判定したい対象の値です。

戻り値

isfinite()関数はブール値(bool型)を返します。

  • 数値が有限の場合:true(1)を返す
  • 数値が有限でない場合(無限大やNaNなど):false(0)を返す

使用例1:除算結果の判定

#include <iostream>
#include <cmath>
using namespace std;
int main() {
    float a = 10.0, b = 0.1, c = 0.0;
    isfinite(a/b)?cout<<"\nThe result of a/b is finite":cout<<"\nThe result of a/b is not finite";
    isfinite(a/c)?cout<<"\nThe result of a/c is finite":cout<<"\nThe result of a/c is not finite";
}

出力

上記のコードを実行すると、次のような出力が得られます。

The result of a/b is finite
The result of a/c is not finite

解説: a/b(10.0 ÷ 0.1)は通常の有限な数値なのでtrueが返されます。一方、a/c(10.0 ÷ 0.0)はゼロ除算となり、結果が無限大(inf)になるためfalseが返されます。

使用例2:NaNの判定

#include <iostream>
#include <cmath>
using namespace std;
int main() {
    float c = 0.0, d = -1.0;
    // 数値が有限かどうかをチェック
    isfinite(c)?cout<<"\nFinite number":cout<<"\nNot a finite number";
    cout<<isfinite(sqrt(d)); // 結果は -NAN になる
}

出力

Finite number
0

解説: 変数c(0.0)は有限な数値なので「Finite number」と表示されました。一方、sqrt(d)は負の数(-1.0)の平方根を求めているため、結果はNaNになります。NaNは有限ではないため、isfinite()は0(false)を返します。

注意点

-1.0の平方根は数学的に定義されていないため、sqrt(-1.0)はNaNを返します。このように、isfinite()関数は無限大だけでなくNaNも検出できるため、数値計算のエラーチェックに非常に便利です。

  1. C++のlog()関数とは?自然対数を求める方法をわかりやすく解説

    C++の標準ライブラリには、数学的な計算を行うための便利な関数が多数用意されています。その中でもlog()関数は、数値の自然対数(ネイピア数 e を底とする対数)を求めるために使用される重要な関数です。log()関数の基本情報C/C++のライブラリ関数 double log(double x) は、引数 x の自然対数(底が e の対数)を返します。この関数を使用するには、ヘッダーファイル <cmath> をインクルードする必要があります。関数の宣言double log(double x)パラメータと戻り値パラメータ: x は浮動小数点型(double)の値です。自然対数を求めたい

  2. C++のswap()関数とは?2つの変数の値を入れ替える方法をサンプルコード付きで解説

    swap()関数とは C++のswap()関数は、2つの値を入れ替える(交換する)ための関数です。この関数を利用すれば、一時的な第三の変数を自分で用意することなく、2つの変数の値を簡単に入れ替えることができます。 swap()関数の構文 void swap(int variable_name1, int variable_name2); 変数に値を代入してswap()関数に渡した場合、関数内では値の入れ替えが行われますが、呼び出し元の実際の変数の値は変わりません。これは、引数が「値渡し」で渡されるためです。実際の変数の値を入れ替えたい場合は、後述する「参照渡し」を使用します。 例1:s