CodeGym /コース /C# SELF /C#の数字と文字

C#の数字と文字

C# SELF
レベル 6 , レッスン 1
使用可能

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倍になる(「マイナス側」がないから)。値が絶対マイナスにならないって分かってる時に使うよ。

符号あり整数型

サイズ 値の範囲 使用例
sbyte
1バイト -128 から 127 -128, 0, 127
short
2バイト -32 768 から 32 767 -1000, 0, 32000
int
4バイト -2 147 483 648 から 2 147 483 647 -1000000, 0, 2000000
long
8バイト -9 223 372 036 854 775 808
から 9 223 372 036 854 775 807
-10_000_000_000, 1

符号なし整数型

サイズ 値の範囲 使用例
byte
1バイト 0 から 255 0, 128, 255
ushort
2バイト 0 から 65 535 1000, 65000
uint
4バイト 0 から 4 294 967 295 100, 4000000000
ulong
8バイト 0 から 18 446 744 073 709 551 615 1, 18_000_000_000_000

小数型

サイズ 値の例 説明
float
4バイト 3.14f, -0.001f 単精度(7桁)
double
8バイト 3.1415, -1.7E+308 倍精度(15-16桁)
decimal
16バイト 0.1m, 12345.6789m お金用の高精度

3. 数字のサフィックス

場合によっては、どの型で数字を使いたいか明示する必要がある。これはサフィックスでやるよ:

  • L または llong型用(例:10000000000L
  • U または uuint型用(例:123U
  • F または ffloat型用(例:3.14f
  • D または ddouble型用(普通は不要。小数はサフィックスなしでdoubleになる)
  • M または mdecimal型用(例:99.99m — お金では超重要!)

サフィックスを付けないと、整数はデフォでint、小数はdoubleになる。例えば、42int3.14doubleだよ。

なんで必要?例えば、デカい数字をlong型の変数に入れる時、サフィックスがないとエラーになるから:


long bigNumber = 9000000000L; // Lを付けないとコンパイルエラーになるよ

お金は必ずdecimalmサフィックスで!


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文字ずつ読む時)に便利!

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION