例えばこういう判定がしたかったです。
- 128 => intだね
- -512 => intだよ
- 3.14 => floatだね
- -6.28 => floatだよ
- "3.14" => 数値じゃない
- null => 数値じゃない
この判定には専用関数とか用意されてません。
自前で判定関数を定義しないとダメでした。
その方法がようやく分かったので、
JavaScriptでint/float判定をするコード例など紹介!
数値(変数)がintかどうか判定する
まずはint(数値)かの判定方法について
これは次の条件を満たせばチェック可能です。
- 1で割った余りが0になる
- Number型に変換可能かどうか
文章だと少し分かりにくい。
でもがNumber型に変換できるから数値であることは間違いないし、それを1で割った余りが0になるのは整数以外にありえないです。よってint確定ということ
実際のコード例を出すとこういう感じです。
▼ このような関数を作ればOK
1 2 3 4 |
/** 引数がintかどうか判定する **/ function isInt(n){ return Number(n) === n && n % 1 === 0; } |
▼ 実際に色々な引数を渡した結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
isInt(128); /// => true isInt(-512); /// => true isInt(3.14); /// => false isInt(-6.28); /// => false isInt('hoge'); /// => false isInt('') /// => false isInt(null) /// => false isInt(undefined); /// => false |
ちなみに isInt(0.0) とか isInt(2.0) などの場合は true という判定になります。小数点がついてるからintでないと判定されるわけではありません。
そして isInt('hoge') とか文字列を渡したとき、 isInt(null) を渡したときなど、数値でないものも弾くことができるのが利点です。
数値(変数)がfloatかどうか判定する
次はfloatかどうかの判定方法について
これは次条件を満たすかチェックすればOK
- Number型に変換可能かどうか
- 1で割った余りが0にならない
まずint判定と同様に、Number型に変換できることで数値かどうかチェック。その上でそれが1で割り切れないならfloatだと判定できるというロジックです。
実際に判定するためのコードを書いてみました。
▼ このような関数作成
1 2 3 4 |
/** 引数がfloatかどうか判定する **/ function isFloat(n){ return Number(n) === n && n % 1 !== 0; } |
▼ 色々な引数を渡した結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
isFloat(3.14); /// => true isFloat(-6.28); /// => true isFloat(128); /// => false isFloat(-512); /// => false isFloat('fuga'); /// => false isFloat('') /// => false isFloat(null) /// => false isFloat(undefined); /// => false |
これはfloatを判定する関数なので、int(整数)を渡したときはしっかり false を返してくれます。もしintもfloatに含めたいなら判定処理を工夫してください。
もし数値かどうかだけ判定したいなら Number(n) === n だけで十分だと思います。試してないけど、それで何とかなるはず
int, floatの判定方法についてまとめ
ここまでを簡単に箇条書き
- intかどうかの判定
まずNumber型に変換 ( Number(n) === n ) でき、なおかつ1で割った余りが0という条件 ( n % 1 === 0 ) を満たせばintだと判定できる
- floatかどうかの判定
こちらはNumber型に変換 ( Number(n) === n ) でき、なおかつ1で割った余りが0でないという条件 ( n % 1 !== 0 ) でfloatだと判定できる
もし間違いなどあればコメントからどうぞ
以上、JavaScriptでのint, floatの判定方法でした。ではまた