C++プログラミングにおけるisnormal()関数の使い方と実例解説
この記事では、C++ STLにおけるisnormal()関数の動作、構文、そして具体的な使用例について詳しく解説します。
isnormal()は、<cmath>ヘッダーファイルに定義されている関数で、指定した数値が「正規化数(ノーマル数)」であるかどうかを判定するために使用されます。C++11以降で利用可能であり、float・double・long doubleの各浮動小数点型に対応したオーバーロードが用意されています。
正規化数(Normal Number)とは?
ある実数が正規化数であるとは、その値がゼロ(0)、無限大(Infinity)、非数(NaN)、あるいは非正規化数(サブノーマル数)のいずれにも該当しないことを意味します。つまり、浮動小数点数として標準的な形式で表現できる数値のことです。
構文
bool isnormal(float num);
パラメータ
この関数が受け取るパラメータは1つだけです。
- num: 正規化数かどうかを判定したい浮動小数点数(float型)。
戻り値
戻り値はbool型として0または1が返されます。
- 指定した数値が正規化数であれば 1(true) を返します。
- ゼロ、無限大、NaN、非正規化数などの場合は 0(false) を返します。
使用例
Input: isnormal(5.0); Output: 1 Input: isnormal(0.0); Output: 0
サンプルコード
#include <bits/stdc++.h>
using namespace std;
int main() {
// float型の場合
cout<<"\n For Float : ";
float var_1 = 5.89F;
// 値がゼロ以外の場合
cout<<"check for isnormal(5.89F) : "<<isnormal(var_1);
// 値がゼロの場合
var_1 = 0.0F;
cout<<"\ncheck for isnormal(0.0F) : "<<isnormal(var_1);
// 0.0で除算して無限大になる場合
var_1 = 2.2F;
cout<<"\ncheck for isnormal(2.2F/0.0F) : "<<isnormal(var_1/0.0F);
// double型の場合
cout<<"\n\n For Double : ";
double var_2 = 5.89;
// 値がゼロ以外の場合
cout<<"check for isnormal(5.89) : "<<isnormal(var_2);
// 値がゼロの場合
var_2 = 0.0;
cout<<"\ncheck for isnormal(0.0) : "<<isnormal(var_2);
// 0.0で除算して無限大になる場合
var_2 = 2.2;
cout<<"\ncheck for isnormal(2.2/0.0) : "<<isnormal(var_2/0.0);
// long double型の場合
cout<<"\n\n For Long Double : ";
long double var_3 = 5.89;
// 値がゼロ以外の場合
cout<<"check for isnormal(5.89) : "<<isnormal(var_3);
// 値がゼロの場合
var_3 = 0.0;
cout<<"\ncheck for isnormal(0.0) : "<<isnormal(var_3);
// 0.0で除算して無限大になる場合
var_3 = 2.2;
cout<<"\ncheck for isnormal(2.2/0.0) : "<<isnormal(var_3/0.0);
return 0;
}出力結果
上記のコードを実行すると、次のような出力が得られます。
For Float : check for isnormal(5.89F) : 1 check for isnormal(0.0F) : 0 check for isnormal(2.2F/0.0F) : 0 For Double : check for isnormal(5.89) : 1 check for isnormal(0.0) : 0 check for isnormal(2.2/0.0) : 0 For Long Double : check for isnormal(5.89) : 1 check for isnormal(0.0) : 0 check for isnormal(2.2/0.0) : 0
まとめ
isnormal()関数を使うことで、浮動小数点数が標準的な形式で表現されているかどうかを簡単にチェックできます。ゼロ除算によって生じる無限大や、アンダーフローによる非正規化数などを検出したい場面、数値計算の信頼性を担保したい場面で特に役立つ関数です。
-
C++で学ぶ基本のグラフィックプログラミング入門
C++は汎用性の高いプログラミング言語です。C++を使えば、基本的な図形の描画、スタイリッシュなフォントによる文字表示、色付けといった初歩的なグラフィックスも作成できます。グラフィックプログラミングは、ターミナルやコマンドプロンプトから直接行うこともできますし、DevC++コンパイラをダウンロードして開発環境を整える方法もあります。graphics.hライブラリのインストールターミナルでグラフィックプログラミングを行う場合は、GCCコンパイラにgraphics.hライブラリを追加する必要があります。以下のコマンドを順番に入力してください。>sudo apt-get install bui
-
C++プログラミング言語とは?特徴と基本をわかりやすく解説
C++は、1979年にベル研究所のビャーネ・ストロヴストルップ(Bjarne Stroustrup)によって開発されたプログラミング言語です。高水準言語と低水準言語の両方の特徴を兼ね備えていることから、「中級言語(ミドルレベル言語)」と位置づけられています。C++はC言語のスーパーセットであり、事実上すべての有効なCプログラムは、そのまま有効なC++プログラムとして扱えます。さらに、WindowsやmacOS、各種UNIXなど、幅広いプラットフォームで動作する点も大きな魅力です。システム開発からゲーム、組み込みソフトウェアまで、多岐にわたる分野で長年活用され続けています。C++の主な言語特性C