Unity-C#で数値を扱う場合、あまり考えることなく整数だとint、浮動小数点だとfloatをつい使ってしまうが、扱える範囲やサイズに応じていくつかの変数型がある。メモリサイズや速度をギリギリとつめたいときや、逆に大きな数値を扱う場合は、型の最適化を忘れないようにしよう。
整数型
型 | 範囲 |
---|---|
sbyte型 | 符号付8bit整数(-128~127) |
byte型 | 符号なし8bit整数(0~255) |
short型 | 符号付16bit整数(-32768~32767) |
ushort型 | 符号なし16bit整数(0~65535) |
int型 | 符号付32bit整数(-2147483648~2147483647) |
uint型 | 符号なし32bit整数(0~4294967295) |
long型 | 符号付64bit整数(-9223372036854775808~9223372036854775807) |
ulong型 | 符号なし64bit整数(0~18446744073709551615) |
浮動小数点型
型 | サイズ | 表記例 |
---|---|---|
float | 符号付32bit浮動小数点数 | 1.3f |
double | 符号付64bit浮動小数点数 | 1.3d |
decimal | 符号付128bit浮動小数点数 | 1.3m |
2017/5/20追記
数値の暗黙の型
整数の暗黙の型はInt32、非整数の暗黙の型はDouble である。
var defaultInt = 3; //整数値で型を指定しない場合 Debug.Log(defaultInt.GetType()); //'System.Int32'になる var defaultNum = 1.0; //非整数値で型を指定しない場合 Debug.Log(defaultNum.GetType()); //'System.Double'になる
Decimal型
Float/Doubleが数値を2進数として保持するのに対し、Decimal型は数値を10進数として保持する。このため、いわゆる「桁落ち」が生じない(生じにくい)。
一方で、Decimal型の必要バイト数は大きく、数値ひとつで16バイトを消費するにもかかわらず、扱える数の範囲は4バイトのfloatより狭い。
参考: