0Pricing
C++ Academy · レッスン

整数型と浮動小数点型

サイズ、範囲、精度のトレードオフを理解して、適切な数値型を選びます。

「整数型と浮動小数点型」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC++ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C++ Academyコースには全4レッスンが含まれています。

2つの数値の世界

C++ には数値型が2つの系統あります。整数は分数を持たず正確で、浮動小数点数は分数を持ち近似値です。目的に合った系統を選んでください。

整数型

組み込み整数型と、64ビットシステムでの一般的なサイズ:

  • char — 1バイト
  • short — 2バイト
  • int — 4バイト
  • long — 4または8バイト
  • long long — 8バイト

符号付きと符号なし

unsigned を付けると負の値の範囲がなくなります。符号なし整数の演算は 2^N を法としてラップアラウンドします。便利な場合もありますが、思わぬバグの原因にもなります。

unsigned int u = 0;
u -= 1;  // wraps around to 4,294,967,295

固定幅整数

正確なサイズが必要な場合は、<cstdint> の型を使用してください。プロトコル、ファイル形式、プラットフォーム間の移植性などで役立ちます。

#include <cstdint>
int8_t   tiny  = 100;
int32_t  word  = 100000;
int64_t  big   = 1LL << 40;
uint64_t huge  = 18446744073709551615ULL;

浮動小数点型

精度が高くなる順に、3つの浮動小数点型があります。

  • float — 32ビット、約7桁の十進数
  • double — 64ビット、約15桁の十進数
  • long double — 通常は80ビットまたは128ビット

IEEE 754形式

浮動小数点数は IEEE 754 標準に従い、符号、指数、仮数で構成されます。非常に大きな値や小さな値を表現できますが、正確に表せるとは限りません。

浮動小数点数の落とし穴

ほとんどの十進数は、2進数では正確に表現できません。0.1 + 0.2 は正確には 0.3 になりません。

double sum = 0.1 + 0.2;
std::cout << (sum == 0.3);   // false on most systems
std::cout << sum;            // 0.3 but printed approximately

浮動小数点数を安全に比較する

浮動小数点数を == で比較してはいけません。小さな許容誤差(イプシロン)の範囲内で比較してください。

bool approxEqual(double a, double b, double eps = 1e-9) {
    return std::abs(a - b) < eps;
}

特殊な浮動小数点値

浮動小数点数には3つの特殊な値があります。NaN(非数)、+inf、-inf です。これらを確認するには、<cmath> の判定関数を使用してください。

#include <cmath>
double x = std::sqrt(-1.0);
if (std::isnan(x)) std::cout << "Not a number";
if (std::isinf(x)) std::cout << "Infinity";

それぞれを使う場面

用途に応じて選択してください。

  • 個数とインデックス → int または size_t
  • 科学計算またはグラフィックス計算 → double
  • 金額 → double は決して使用しないでください。スケーリングした整数(セント単位)または十進数ライブラリを使用します

型のサイズはプラットフォームによって異なる

標準で保証されるのは最小サイズだけです。int は16、32、または64ビットの場合があります。移植性のため、データ構造では <cstdint> の固定幅型を使用してください。

理解度チェック

金額を正確に表すには、どの型を使用すべきですか?

まとめ

整数は正確ですが、浮動小数点数は近似値です。個数には int または固定幅整数、科学計算には double を選び、金額には決して浮動小数点数を使用しないでください。浮動小数点数は許容誤差を使って比較し、決して == を使わないでください。

よくある質問

「整数型と浮動小数点型」レッスンは無料ですか?

はい。「整数型と浮動小数点型」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。

「整数型と浮動小数点型」で何を学びますか?

サイズ、範囲、精度のトレードオフを理解して、適切な数値型を選びます。 ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C++ Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「整数型と浮動小数点型」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC++ Academyレッスンでコードを書いて実行できますか?

はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 整数型と浮動小数点型
  2. cmathヘッダー:pow、sqrt、abs、round
  3. randomヘッダーで乱数を扱う
  4. 数値の上限とオーバーフローの動作
← C++ Academyに戻る