数値リテラル:
- 整数 = 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:
コメントを投稿