ぎばニャン怒りのデスマーチ

真の定時は23時だよぉ

【C#】Int、Byte、Short、Double、Float、Longの区別をつけるよ【メモ】

表題にもあるけど、今日さっそく桁あふれでバグをぶちかましてきたから反省のために記事を書いてる。

f:id:syama0520:20170321233112p:plain

数値型ってなにがあるのか

ひとまず表現できるサイズの小さい順で全部あげていくことにする。

 

Byte 符号なし8bit整数

0~255まで表現可能。

 

Short 符号あり16bit整数

-32,768 ~ 32,767まで表現可能。

 

Int  符号あり32bit整数

-2,147,483,648 ~ 2,147,483,647まで表現可能

 

Long 符号あり64bit整数

 

-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 まで表現可能。

100京までの数字なんて何で使うんだろうか…天文学とか?

 

Float 単精度浮動小数点数

だいたい-3.4 × 10の38乗 ~+3.4 × 10の38乗まで表現可能。

有効桁数は7ケタ。

ちなみにFloat型の変数に値を格納するときは末尾にサフィックス(接尾辞)「F」または「f」をつけるのが規約。

つけていないと自動的にDouble型になるため、「float  value = 2.3」なんて記載はコンパイルエラーで落ちるそうな。

 

Double 倍精度浮動小数点数

±1.5 × 10の−324乗 ~ ±1.7 × 10の308乗まで表現可能。もはや何の数値まであらわせるのかぱっと見わからない。

有効桁数は15~16ケタ。

整数をDouble型として扱いたいときは「double value = 3D」のようにサフィックスをつけること。「d」でもおけ。

 

 

まとめ

整数型はまあだいたいInt型でカバーできそう。マイナスも扱えるし、20億ぐらいまで表現可能だし。(Longはサルマン国王かビル・ゲイツくらいしか使わないだろう)

浮動小数点数については、精度は高いに越したことないし、Double型を使っておけばいいのかな。

まあ各データ型ごとに使用するメモリ領域が違うので、できるだけ使用目的の値を表現できる最小の型を使うのがいいんでしょうなあ。