Java で案外、これを問われると簡単なようですぐに出てこない。
結果、boolean 値とする。
文字列にして小数点(.)文字を検証する方法
double d = 13.02; boolean flg = Long.parseLong(String.valueOf(d).substring(String.valueOf(d).indexOf('.')+1))==0;
なんとも、短絡的というか動物的なコード。
long に cast できるかで検証
double d = 13.02; boolean flg = d==(long)d;
Object に、Long / Integer / Double いずれかで格納する。
double d = 21.0; Object obj if (d==(long)d) { if (Integer.MIN_VALUE <= (long)d && (long)d <= Integer.MAX_VALUE) { obj = (int)d; }else { obj = (long)d; } }else{ obj = d; }
なぜ、こんなことに気を配るかというと、
Google gson の JsonReader で読込む JsonToken での認識は、Long / Double という区別ではなく
NUMBER なので、小数点ある数値なのか整数なのかをチェックしたい時があるからだ。