初心者のためのC#プログラミング本格入門65 - 数値は色々あるよ
大量のテストデータを扱うには、数値そのものに関する知識が必要です。数値と言うと簡単そうだと思う人もいるでしょうが、実のところ数値は結構難しいオブジェクト(もの)です。どの様に難しいのかと言いますと、C#では数値に複数の種類(型)があり、状況によりそれらを使い分けなくてはなりません。
C#にある代表的な数値の型は、sbyte、byte、short、ushort、int、uint、long、ulong、float、double、decimalです。これらを合わして値型と言います。値型は大変重要なオブジェクトで、これらのオブジェクトを状況に合わして使いこなします。
初心者の方は、何故これほど多くの数値を表す型があるのかと不思議に思うでしょう。その理由は、コンピュータは2進数で動いているからです。私達人間が普段使っている数は10進数です。でも、電気で動いているコンピュータはプラスとマイナスを表す2進数で動いています。その違いを埋めるには、2進数を10進数へと変換せねばなりません。
2進数から10進数の変換に当たって、色々な問題が生じてきます。10進数「8」を2進数で表そうとする「1000」です。この数値はWindowsのアクセサリ電卓を使えば確認できます。この時点で勘の良い人は察すると思いますが、数値を表そうとする1と0が複数個必要になります。ですから、その数をどれだけ取るのかで表せる数値の範囲に違いが出ます。その数値の範囲の違いが数個の型で表現されています。
ここまでの説明で、個々の型がどれだけの範囲の数値を表せるのか気になったと思います。幸いC#にはそれを確認する術があります。次のプログラムを実行すれば、最小値と最大値を確認できます。
class Program
{
static void Main()
{
System.Console.WriteLine( "{0} ~ {1}",
int.MinValue, int.MaxValue );
}
}
この例はint型だけしか指定していませんが、byteの様な他の型にも、MinValueプロパティとMaxValueプロパティがありますので同様の方法で値の範囲を知る事が出来ます。この2つのプロパティ、MinValueとMaxValueを上手く使えば、全ての数値を試さなくてもテストを効率よく実施できます。具体的な方法は次回解説します。スペースの都合上今回は、2進数の説明を省略しましたが、プログラミングをする上で2進数は大変重要です。プログラミングをするなら、是非とも2進数を学んで下さい。機会があれば、このブログで2進数の解説をしたいと思っています。今回はこれで終わりです。