C++ 数値

通常、数値が必要なときは、int、short、long、float、double などのプリミティブデータ型を使用します。これらの数値用データ型の取り得る値と数値範囲については、C++ データ型の章で説明しました。

C++ での数値の定義

以前の章のさまざまな例で数値を定義しました。次に、C++ でさまざまな型の数値を定義する総合的な例を示します。

例

#include <iostream> using namespace std; int main () { // 数値の定義 short s; int i; long l; float f; double d; // 数値の代入 s = 10; i = 1000; l = 1000000; f = 230.47; d = 30949.374; // 数値の出力 cout << "short s :" << s << endl; cout << "int i :" << i << endl; cout << "long l :" << l << endl; cout << "float f :" << f << endl; cout << "double d :" << d << endl; return 0; }

上記のコードをコンパイルして実行すると、次の結果が生成されます。

short  s :10
int    i :1000
long   l :1000000
float  f :230.47
double d :30949.4

C++ での数学演算

C++ では、さまざまな関数を作成できるだけでなく、さまざまな便利な関数も利用できます。これらの関数は標準の C および C++ ライブラリに書かれており、組み込み関数です。プログラム内でこれらの関数を参照できます。

C++ には豊富な数学関数が組み込まれており、さまざまな数値を処理できます。次の表に、C++ の便利な組み込み数学関数をいくつか示します。

これらの関数を利用するには、数学ヘッダーファイルをインクルードする必要があります<cmath>。

番号関数 & 説明
1double cos(double);
この関数は、ラジアン角(double 型)のコサインを返します。
2double sin(double);
この関数は、ラジアン角(double 型)のサインを返します。
3double tan(double);
この関数は、ラジアン角(double 型)のタンジェントを返します。
4double log(double);
この関数は、引数の自然対数を返します。
5double pow(double, double);
最初の引数を x、2 番目の引数を y とすると、この関数は x の y 乗を返します。
6double hypot(double, double);
この関数は、2つの引数の二乗和の平方根を返します。つまり、引数が直角三角形の直角を挟む2辺である場合、関数は斜辺の長さを返します。
7double sqrt(double);
この関数は、引数の平方根を返します。
8int abs(int);
この関数は、整数の絶対値を返します。
9double fabs(double);
この関数は、任意の浮動小数点数の絶対値を返します。
10double floor(double);
この関数は、渡された引数以下で最大の整数を返します。

次は、数学演算に関する簡単な例です。

例

#include <iostream> #include <cmath> using namespace std; int main () { // 数値の定義 short s = 10; int i = -1000; long l = 100000; float f = 230.47; double d = 200.374; // 数学演算 cout << "sin(d) :" << sin(d) << endl; cout << "abs(i) :" << abs(i) << endl; cout << "floor(d) :" << floor(d) << endl; cout << "sqrt(f) :" << sqrt(f) << endl; cout << "pow( d, 2) :" << pow(d, 2) << endl; return 0; }

上記のコードをコンパイルして実行すると、次の結果が生成されます。

sin(d) :-0.634939
abs(i)  :1000
floor(d) :200
sqrt(f) :15.1812
pow( d, 2 ) :40149.7

C++ での乱数

多くの場合、乱数を生成する必要があります。乱数生成器には関連する関数が2つあります。1つはrand()この関数は擬似乱数を1つ返すだけです。乱数を生成する前に、必ず呼び出す必要がありますsrand()関数。

次は、乱数生成に関する簡単な例です。この例では、time()関数を使用してシステム時刻の秒数を取得し、rand() 関数を呼び出して乱数を生成します:

例

#include <iostream> #include <ctime> #include <cstdlib> using namespace std; int main () { int i,j; // シードを設定 srand( (unsigned)time( NULL ) ); /*10 個の乱数を生成*/ for( i = 0; i < 10; i++ ) { // 実際の乱数を生成 j= rand(); cout <<"乱数:" << j << endl; } return 0; }

上記のコードをコンパイルして実行すると、次の結果が生成されます。

随机数: 1748144778
随机数: 630873888
随机数: 2134540646
随机数: 219404170
随机数: 902129458
随机数: 920445370
随机数: 1319072661
随机数: 257938873
随机数: 1256201101
随机数: 580322989

C++ での数学定数

C++ では、数学定数(π、e、黄金比など)は多くのアルゴリズムやアプリケーションにとって不可欠な要素です。初期のバージョンの C++ ではこれらの定数は直接提供されていませんでしたが、C++20 以降、標準ライブラリにはいくつかの一般的な数学定数が導入され、より効率的で統一された方法でアクセスできるようになりました。

詳細は以下を参照してください:C++ 標準ライブラリ<numbers>。

π

  • 定数:std::numbers::pi
  • 型:std::float32_t(32ビット浮動小数点)、std::float64_t(64ビット浮動小数点)

例

#include <cmath>
#include <iostream>

int main() {
    std::cout << "pi: " << std::numbers::pi << std::endl;
}

自然対数の底 e (オイラー数)

  • 定数:std::numbers::e
  • 型:std::float32_t、std::float64_t
std::cout << "e: " << std::numbers::e << std::endl;

黄金比 φ (Golden Ratio)

  • 定数:std::numbers::phi
  • 型:std::float32_t、std::float64_t
std::cout << "phi: " << std::numbers::phi << std::endl;

例

#include <iostream>
#include <cmath>
#include <numbers>

int main() {
    std::cout << "pi: " << std::numbers::pi << std::endl;
    std::cout << "e: " << std::numbers::e << std::endl;
    std::cout << "phi: " << std::numbers::phi << std::endl;

    return 0;
}

出力結果は次のとおりです:

pi: 3.14159
e: 2.71828
phi: 1.61803
その他の拡張