-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(这将接受类似or的字符串0x2A。)

于 2013-09-08T18:03:57.597 回答