2009-08-24 13 views
25

変数に数値が含まれていて、整数であるかどうかをテストするにはどうすればよいですか?与えられた数が整数かどうかを検出するには?

if (1.589 == integer) // false 
if (2 == integer) // true 

手がかりはありますか?

+0

が重複する可能性を(のhttp:/ /スタックオーバーフロー。com/questions/14636536/how-to-check-if-a-variable-is-an-as-as-javascript) –

答えて

50
num % 1 === 0 

これは最初Numberを入力するnumを変換するので、整数に変換することができる任意の値は、試験(例えば'42'true)を通過します。

あなたは

typeof num === 'number' 

のチェックに加え、これらを除外したい場合にも、これを行うために型指定されていないチェックと

parseInt(num) === num 

用すなわち

parseInt(num) == num 

parseInt()を使用することができます型付きのチェックのために。

テストは等しくないことに注意してください。parseInt()で確認すると、最初にStringに変換されますので、trueはチェックに合格しません。

はまた、これらがparseInt()ではなく​​によって認識されるようparseInt()経由型なしのチェックが正しく進数文字列を処理しますが、オクタルのために失敗します(先行ゼロすなわち数字列)ことに注意してください。先行ゼロを持つ10進文字列を処理する必要がある場合は、基数引数を指定する必要があります。

+0

これは、ありがとうございます。 – jirkap

-1

valが数字でない場合はtrueを返すisNaN(val)というjavascript関数があります。 おっと:あなたは数としてのvalを使用したい場合は

は、あなたがのparseInt()またはparseFloatは()

EDITを使用してキャストする必要があります。あなたが能力を解析javasを利用したり、同様剰余演算子%を試す可能性がどちらか

if((typeof(no)=='number') && (no.toString().indexOf('.')==-1)) 
+1

関数の名前からちょうど、 "isNaN"はvalが "Not * a Number"ならば真を返すと思います。これはNaNの略です。打ち間違え? –

+1

isNaN(val)は、valが数値でない場合はtrueを返しますが、非整数の場合もfalseを返します。問題を解決できません。 – Amok

2

で述べたように、エラーを修正動作しません。

if (parseInt(number, 10) == number) 
{ 
    alert(number + " is an integer."); 
} 
+0

8.000は依然として整数なので、動作しません。 –

+1

おそらく、整数 – bdukes

+0

Hmmの定義(および使用例)に依存します。真実。本質的に数学的な問題については、数字ではなく数字で考える傾向があります。 –

2

ます。この...:コメントどのようにこの程度

+1

radixパラメータは常に含まなければなりません。parseInt(number、10) – Greg

+0

はい、はい。修正しました。 – paracycle

+0

@Greg:必ずしもそうではありません - 16進数を渡すことをお勧めします。 'parseInt()'では認識されますが、 'Number()'では認識されないので、8進数は失敗します – Christoph

6

誰かがすでにdone it for youです。

+0

@Gregは上記のように(http://stackoverflow.com/questions/1323314/detecting-if-a-given-number- is-an-integer#comment-1157013)、これはparseIntにradixパラメータを含める必要があります。 – bdukes

9

これは動作します:

if (Math.floor(x) == x) 
+0

これは、xが 'false'の場合に働く利点があります。 –

4

あなたが整数の正式な定義を使用できます[?変数はJavascriptの整数であるかどうかを確認する方法]の

Math.floor(x) === x 
関連する問題