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

C++のisnormal()関数とは?使い方とサンプルコードを解説

この記事では、C++のisnormal()関数について詳しく解説します。この関数は<cmath>ライブラリに含まれており、引数として渡された浮動小数点数が「正規化数(ノーマルな数)」であるかどうかを判定するために使用されます。

正規化数とみなされない(非正規化数となる)のは、ゼロ、無限大(infinity)、NaN(Not a Number)などの特殊な値です。

isnormal()関数の基本仕様

isnormal()関数は、float、double、long double型の値を引数として受け取ります。戻り値は以下の通りです。

  • 数値が正規化数の場合:1(true)を返す
  • それ以外の場合:0(false)を返す

サンプルコード

#include<iostream>
#include<cmath>
using namespace std;
int main() {
    cout << "isnormal(" << 5.23 << "): " << isnormal(5.23) << endl;
    cout << "isnormal(" << 0.00 << "): " << isnormal(0.00) << endl;
    cout << "isnormal(" << 2.0/0.0 << "): " << isnormal(2.0/0.0) << endl;
}

実行結果

isnormal(5.23): 1
isnormal(0): 0
isnormal(inf): 0

コードの解説

このプログラムでは、3つの異なる値に対してisnormal()関数を呼び出し、その判定結果を出力しています。

  • 5.23:通常の正規化数であるため、1が返されます。
  • 0.00:ゼロは正規化数ではないため、0が返されます。
  • 2.0/0.0:ゼロによる除算の結果、無限大(inf)となるため、0が返されます。

まとめ

isnormal()関数は、浮動小数点数が正規化数かどうかを簡単に判定できる便利な関数です。数値計算処理において、ゼロや無限大、NaNといった特殊な値を事前に除外したい場合に活用すると、より堅牢なプログラムを作成できます。

  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 以下の図から出力を確認できます。 この問題は数列に関するものなので、解法ではまず数列のパターンを見つけることから始めます。 解法のアプローチ このプログラムでは、数列の