数値リテラル:
- 整数 = int = 例:10
- 小数点付き = double,float = 例:10.0
int型同士で計算すれば結果の値は常に『int』。
小数点以下切り捨て。四捨五入などしない。
int型の数値に「Math.Floor」などとは意味不明。
double,floatやdecimalにキャストでもしないとコンパイルエラーになるはず。
某サイトでヘンなサンプルコードを見たのでちょっと確認も兼ねてです。
//リテラル
Console.WriteLine(
"literal : {0}\n"+
"literal(小数点付き) : {1}\n"+
"literal(16進数) : {2}",
10 / 3,
10.0 / 3,
0xa / 3);結果:literal : 3
literal(小数点付き) : 3.33333333333333
literal(16進数) : 3
//サフィックス
Console.WriteLine(
"suffix[f] : {0}\n" +
"suffix[f] : {1}\n" +
"suffix[d] : {2}\n" +
"suffix[m] : {3}",
10f / 3, //f => float
10 / 3f,
10d / 3, //d => decimal
10m / 3); //m => double結果:
suffix[f]: 3.333333
suffix[f] : 3.333333
suffix[d] : 3.33333333333333
suffix[m] : 3.3333333333333333333333333333
変数
int i = 10;
double a = 10;
Console.WriteLine(
"int : {0}\n"+
"double : {1}\n" +
"\u0061 : {2}",
i / 3,
a / 3,
\u0061 / 3);//\u0061 => a結果:
int : 3
double : 3.33333333333333
a : 3.33333333333333
16進数の『0xa』は10進数の『10』。
『\u0061』は変数『a』のことで、上記の場合『変数 double a』を参照していて、ちゃんと計算できるのですが、実際にこんな書き方してる人がいたらちょっとひく。
余談ですが、Uint16のMaxValueを見るとドラクエⅠの経験値を思い出す。





0 Comments:
コメントを投稿