整数型と浮動小数点型
サイズ、範囲、精度のトレードオフを理解して、適切な数値型を選びます。
「整数型と浮動小数点型」は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フィードバックを取得できます。ローカル設定は不要です。