数値の計算後の型は? 数値リテラルとかサフィックスとか

数値リテラル:

  • 整数 = 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:

Sony Style(ソニースタイル)
デル株式会社

Recent Posts