-1

番号を入力するのが私の仕事です。数値になるまでループする

do {
    num=prompt ("Please enter a number:");
    if (parseInt(num,10)) {  
        if (typeof num !=="number") {
            if (!isNaN(num)) {  
                stop=1;
            }
        }
    }
} while (stop != 1);

「3e3」と入力すると動作します。え?praseInt("3e3", 10) を修正するにはどうすればよいですか?

4

3 に答える 3

3

などの正規表現で確認してください/^\d+$/

if (/^\d+$/.test(num)) {
  // it's an integer
} else {
  // it's not an integer
}
于 2013-09-08T17:46:01.497 に答える
2

parseInt数値である文字が見つかるまで (または最後に到達するまで)、文字列の最初の文字を取得します。

それを念頭に置い3e3て、最初のものを読み取り3、残りを破棄します。

とはいえ、あなたのロジックには欠陥があります。数値をparseInt 返しますが、数値を変更しているように扱っているようです。

于 2013-09-08T17:47:08.580 に答える
1

これは、parseInt が最初の無効な文字以降 (およびそれを含む) を無視するためです(手順 11.)。

のようなものを拒否したい場合は3e3、 を実行するだけで、文字列に小数が含まれているかどうかを簡単にテストできます/^\s*\d+\s*$/.test(num)

のようなものを処理したい場合3e3は、単純に単項 + 演算子を使用して文字列を数値に変換+numできます。4.2e+42(これは、またはのような文字列を受け入れます0x2A。)

于 2013-09-08T18:03:57.597 に答える