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

C++のNaN(非数)とは?意味と発生例をわかりやすく解説

NaNは「Not a Number(非数)」の略称で、定義されていない、あるいは浮動小数点数として表現できない値を示す特殊な値です。C++では、数学的に結果が存在しない演算を行った場合などにNaNが返されます。

NaNが発生する典型例

NaNが発生する代表的なケースとして、次のようなものがあります。

  • 負の数の平方根を求める(例:sqrt(-5))
  • 0を0で割る演算(0/0)
  • 無限大同士の減算(∞ − ∞)などの未定義の演算

これらの演算は数学的に結果が一意に定まらないため、通常の数値ではなくNaNとして表現されます。

コード例

以下は、負の数の平方根を求めた結果、NaNが出力されるサンプルプログラムです。

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

int main() {
    cout << "Square root of -5: " << sqrt(-5) << endl;
    return 0;
}

実行結果

Square root of -5: nan

補足:NaNの特徴と注意点

NaNには重要な性質があります。それは「NaNは自分自身を含むどの値とも等しくならない」という点です。つまり、nan == nan の比較結果はfalseになります。そのため、プログラム内でNaNを判定する際には == 演算子を使わず、<cmath> ヘッダで提供されている std::isnan() 関数を使用するのが一般的です。

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

int main() {
    double value = sqrt(-5);
    if (isnan(value)) {
        cout << "この値はNaNです" << endl;
    }
    return 0;
}

このように、NaNはエラーではなく「計算結果が定義できない」ことを伝えるための仕組みです。数値計算を扱うプログラムでは、NaNの発生条件と判定方法を理解しておくことが重要です。

  1. Windowsで使えるC++開発向けおすすめIDE 7選

    ```html 大規模なプロジェクトをプレーンなテキストエディターだけで管理するのは困難です。こうしたケースではIDE(統合開発環境)を使った方が、生産性が向上しストレスも大幅に軽減されます。IDEにはさまざまな種類があり、自分のニーズに合ったものを選ぶことが重要です。ここでは、Windowsで利用できる優れたC/C++向けIDEをご紹介します。 1. Visual Studio Microsoftが開発した定番IDEです。Windows上でのC++プログラムの構築・開発・プロファイリングにおいて、最高クラスのツール群を備えています。豊富なプラグインストアも魅力で、Azure、PowerShe

  2. C++プログラミング言語とは?特徴と基本をわかりやすく解説

    C++は、1979年にベル研究所のビャーネ・ストロヴストルップ(Bjarne Stroustrup)によって開発されたプログラミング言語です。高水準言語と低水準言語の両方の特徴を兼ね備えていることから、「中級言語(ミドルレベル言語)」と位置づけられています。C++はC言語のスーパーセットであり、事実上すべての有効なCプログラムは、そのまま有効なC++プログラムとして扱えます。さらに、WindowsやmacOS、各種UNIXなど、幅広いプラットフォームで動作する点も大きな魅力です。システム開発からゲーム、組み込みソフトウェアまで、多岐にわたる分野で長年活用され続けています。C++の主な言語特性C