1. どんな数字があるの?
プログラミングでは数字をめっちゃ使うよね — ユーザーの年齢から銀河の星の数、銀行口座のコインまで。でもタスクによって必要な数字の種類が違うんだ:整数だけでいい時もあれば、超正確な小数が必要な時もあるし、「マイナスなし」の数字が欲しい時もある。
整数 (int など)
整数は小数点以下がない数字だよ。
C#では一番よく使うのがintだけど、他にもサイズや範囲が違ういくつかのバリエーションがある。
- int — 整数のメイン「仕事人」型。かなり大きい(小さい)値も入るし、メモリもそんなに食わない。
例えば、いいね数、年齢、1年の日数のカウントにはほぼintを使うよ。 - long — もっとデカい値(例えば何十億とか何兆とか)が必要な時に使う。
例:YouTubeの全歴史の再生回数を保存する時とか。 - short — メモリ節約型だけどあんまり使わない。小さい値が大量にある時に便利(例:オーディオデータや色の成分)。
- byte — さらに小さい値用。特にグラフィックやファイル操作でメモリ節約が大事な時に使う。
小数 (double, float, decimal)
小数点以下が必要な数字もあるよね。例えば、気温、学生の平均点、商品の値段(小銭付き)とか。
- double — 小数のデフォルト型。ほとんどの計算で十分な精度(例:3.1415926535…)。
- float — もっと軽くて精度が低い型。グラフィックや大量データ処理でメモリ節約したい時によく使う。
- decimal — お金や会計で使う型。小数の保存方法のクセで「損失」しないように、1円単位まで正確にしたい時に使う。例えば、口座残高、商品の値段、為替レートとか。
特殊な数値型
C#には特別なケース用の数値型もあるよ:
- uint, ulong, ushort — 「符号なし」型で、プラスだけ使える。その分、同じサイズでも「符号あり」より2倍広い範囲が使える。
- sbyte — 小さくて符号あり型(-128から127までのマイナス・プラス両方をコンパクトに保存できる)。
- BigInteger — 標準の範囲を超える超巨大な数字を扱いたい時(暗号や天文学の計算とか)に使う。
2. 符号あり・符号なしの数字
符号あり型はプラスもマイナスも保存できる。値が「0より上も下も」あり得る時に便利:例えば気温、口座残高、海抜とか。
符号なし型は0とプラスだけ。マイナスがあり得ない時に使う — 例えば部屋の人数、ファイルのバイト数、時間とか。
例:
- int(符号あり):-10, 0, 50
- uint(符号なし):0, 10, 1000
符号なし型を使うと、変数に入る最大値が2倍になる(「マイナス側」がないから)。値が絶対マイナスにならないって分かってる時に使うよ。
符号あり整数型
| 型 | サイズ | 値の範囲 | 使用例 |
|---|---|---|---|
|
1バイト | -128 から 127 | -128, 0, 127 |
|
2バイト | -32 768 から 32 767 | -1000, 0, 32000 |
|
4バイト | -2 147 483 648 から 2 147 483 647 | -1000000, 0, 2000000 |
|
8バイト | -9 223 372 036 854 775 808 から 9 223 372 036 854 775 807 |
-10_000_000_000, 1 |
符号なし整数型
| 型 | サイズ | 値の範囲 | 使用例 |
|---|---|---|---|
|
1バイト | 0 から 255 | 0, 128, 255 |
|
2バイト | 0 から 65 535 | 1000, 65000 |
|
4バイト | 0 から 4 294 967 295 | 100, 4000000000 |
|
8バイト | 0 から 18 446 744 073 709 551 615 | 1, 18_000_000_000_000 |
小数型
| 型 | サイズ | 値の例 | 説明 |
|---|---|---|---|
|
4バイト | 3.14f, -0.001f | 単精度(7桁) |
|
8バイト | 3.1415, -1.7E+308 | 倍精度(15-16桁) |
|
16バイト | 0.1m, 12345.6789m | お金用の高精度 |
3. 数字のサフィックス
場合によっては、どの型で数字を使いたいか明示する必要がある。これはサフィックスでやるよ:
- L または l — long型用(例:10000000000L)
- U または u — uint型用(例:123U)
- F または f — float型用(例:3.14f)
- D または d — double型用(普通は不要。小数はサフィックスなしでdoubleになる)
- M または m — decimal型用(例:99.99m — お金では超重要!)
サフィックスを付けないと、整数はデフォでint、小数はdoubleになる。例えば、42はint、3.14はdoubleだよ。
なんで必要?例えば、デカい数字をlong型の変数に入れる時、サフィックスがないとエラーになるから:
long bigNumber = 9000000000L; // Lを付けないとコンパイルエラーになるよ
お金は必ずdecimal+mサフィックスで!
decimal price = 999.99m;
4. アンダースコア _ 区切り
長い数字はゼロが多くて見間違えやすいよね。C#ではアンダースコアを数字の中に入れて、見やすくできるよ。
int population = 146_700_000;
long stars = 100_000_000_000L;
これは全然OK:コンパイラはアンダースコアを無視するし、見た目で桁がすぐ分かる。ただし、先頭・末尾・小数点の後・サフィックスの前にはアンダースコアを付けないこと!
5. 文字型 char
数字じゃなくて、1文字(アルファベット、数字、記号、スペースとか)を扱いたい時もあるよね。そのための特別な型がcharだよ。
charって何?
1つの文字を保存する変数だよ:
- アルファベットやキリル文字('A', 'я')
- 数字('5')
- 記号('#', '%', '@')
- 制御文字('\\n' — 改行)
ポイント:
- char型の値はシングルクォートで書く:char letter = 'B';
- 実はcharの中身はUnicodeの数値コードだから、charは比較したり、intに変換したり、簡単な計算もできる:
char a = 'A';
char b = (char)(a + 1); // 'B'
int code = a; // 65 — 'A'のコード
特殊文字も使えるよ、例えば:char tab = '\\t'; // タブ文字
charは何に使う?
文字列を1文字ずつ処理したい時(例:最初の文字チェック、句読点探し、パスワードを1文字ずつ読む時)に便利!
GO TO FULL VERSION