こんばにちは、ユウです。
最近はコロナウィルスが日本で猛威を奮っているのにも関わらず、日本の企業が休まないことで世間が騒がれていますね。
海外映画(CABIN)でネタにされていた「日本人だぞ、休暇など取るか?」が本当に起きているのを見ると日本はかなり危ないのかもしれませんね()
今回は、C#の変数とデータ型についての続きとなっています。
前回の記事については、リンク先へ足を運んでください。
本記事での学習
☑8つの整数型を覚える
☑浮動小数点とは何かを理解する
今回も文字が多くなってしまいますが、コードを書いていくところもあるので手を動かしながら進めてください。
それでは早速始めていきましょう。
今回C#を紹介するにあたって、発行元:SB クリエイティブ株式会社 著者:粂井 康孝(くめい やすたか)さんの「猫でもわかるC#プログラミング」を参考に紹介しています。
整数型
整数型には8種類あり、そこにchar型が加わることがあります。
それぞれの型には表せる範囲があり、それらを使い分ける事で変数に代入などをしていきます。
型 | ビット長 | 範囲 |
sbyte | 8 | -128 ~ 127 |
byte | 8 | 0 ~ 225 |
short | 16 | -32768 ~ 32767 |
ushort | 16 | 0 ~ 65535 |
int | 32 | -2147483648 ~ 2147483647 |
uint | 32 | 0 ~ 4294967295 |
long | 64 | めっちゃ広い |
uong | 64 | めっちゃ広い |
longとulongについてはめっちゃ広いと書いていますが、ここで書くとかなりのスペースが取られてしますので省略しておきます。
もし、どのくらいのものなのかなと疑問に思う方は以下のリンクで見れるので参考にしてみてはいかがでしょうか。
ここで、表をもう一度見てみましょう。
頭文字にuがついている型はマイナスの数がないことが分かります。このuという頭文字は符号なし(unsigned)からきています。
byteはもともと符号なしの型なので、そこに符号付き(signed)の頭文字であるsがついてsbyteとなっています。
これらを覚えると、覚えるべき型は4つのみとなります。
符号付きを小さい順に並べるとsbyte,short,int,longとなり、ビット長は順番に8,16,32,64となります。
ビット長というのはメモリ内に占有する領域の大きさとなります。
8ビットが1バイトですのでそれぞれ1,2,4,8バイトとなりますね。
こういう風に覚えると、案外簡単に覚えることができます。
データの範囲
先ほどの表で範囲を見てくださったとき、疑問に思われた方もいるかもしれません。「この範囲どう決まっているんだ?」と。
これらの範囲は2のビット長乗で知ることができます。
それでは、実際にそれぞれの型の範囲を出力してみましょう。
以下のコードを書いて出力してください。
データ型.MaxValueでその型の最大値を、データ型.MinValueで最小値を表すことができます。
これは構造体というもので定義されているので表現できます。
ですが、構造体についてはまだまだ先の事となるので、今ではかなり便利なものという認識で大丈夫です。
文字列を数値に変換
数値型のデータ.Parse(string str)
このメソッドも覚えておくと便利です。
これは数を表す文字列strを数値型に変換するメソッドです。
例えば、
string str = “123”;
int x;
x = Parse(str);
とすれば、xにint型の数値123が代入されます。
これはかなり便利なものです。以前の記事で紹介しているユーザーの入力を取得できるConsole.ReadLineメソッドでは、文字列として取得しています。
ですので、このままでは数値として扱えません。
勘のいいあなたはもうお分かりかと思いますが、これに先ほど紹介したメソッドを使えば問題解決です。
早速コードを書いてみましょう。
もしかしたら、int x = int.Parse(Console.ReadLine());のところが分かりにくいかもしれませんね。
この部分を次のように書き換えてみてください。
string strx = Console.ReadLine();
int x = int.Parse(strx);
これだとかなり分かりやすいかと思います。
C系のプログラムは通常、上のほうの書き方でやりますが理解がしやすいほうでまずはコードを書いていくことをおすすめします。
Convert
先ほどは数値型のデータ.Parse(string str)を使用して型を変換しましたが、ConvertクラスのTo〇〇〇(〇〇〇は.NET型)メソッドでも色々な変換ができます。
.NET型について自信がない方は過去の記事を参考にしてください。
先ほどのコードをこのメソッドで変更してみましょう。
浮動小数点型
浮動小数点型にはfloatとdoubleがあります。ビット長でいうと、floatは32ビット長でdoubleは64ビット長です。
浮動小数点というのは、1.23とか10000.1等のように小数を持つ数値のことです。小数点が数値によってふわふわと右に移動するイメージですね。
コンピュータは内部では2進法で計算したり処理をしたりしているのは知っているけど、2進法で小数点はどう表すの?と思いますよね。
浮動小数点にビット長については、簡単にいうと精度を表します。
そもそも、コンピュータは小数点を嫌がります。10進数でいえば0.1はまぎれもない0.1ですが、2進数では10進数でいう0.1を正確に表現することはできません。
その結果、0.1に限りなく近い値を0.1としているのです。
その精度がfloatとdoubleで異なります。
それでは、先ほどのようにこれらの範囲を調べてみましょう。
次に、BMIを計算するプログラムを作成しましょう。
余談ですがBMIとは体重(kg)を身長(m)の2乗で割ったものです。これが25以上だと肥満扱いになるので気を付けてください。
C#において2乗は「x*x」で計算が可能。
MathクラスのPowメソッドで計算することも可能。
最後に
今回は、データ型の整数型と浮動小数点型について紹介してきました。
これらは、ゲーム制作においてもかなり使用していくので必ず理解できるようにしてください。
また、数値型のデータ.Parse(string str)やConvertメソッドもかなり有用性が高いので覚えておくようにしましょう。
今回はこれで以上となります。
最後まで読んでいただきありがとうございました。