如何判断“是否”;123@231.23&引用;不是javascript中的数字吗?

如何判断“是否”;123@231.23&引用;不是javascript中的数字吗?,javascript,Javascript,parseInt(“123@231.23“”返回123,这是一个数字 有很多函数可以检测某个东西是否是数字,但它们都依赖于parseInt 如果不使用正则表达式,检测这不是整数的另一种通用方法是什么 if (isNaN("123@231.23")) { alert("IsNaN - not a number"); } else { alert ("it is a number"); } 我假设OP需要区分输入是否是数字。若输入是float或integer,看起来和他的问题无关。 也许,我错

parseInt(“123@231.23“”
返回123,这是一个数字

有很多函数可以检测某个东西是否是数字,但它们都依赖于parseInt

如果不使用正则表达式,检测这不是整数的另一种通用方法是什么

if (isNaN("123@231.23"))
{
 alert("IsNaN - not a number");
}
else
{
 alert ("it is a number");
}
我假设OP需要区分输入是否是数字。若输入是float或integer,看起来和他的问题无关。 也许,我错了

编辑: 好吧,为了让大家高兴,javasript中的整数相当大。 javascript检查中的整数有多大

询问某事物是否为整数就是询问它是否是介于9007199254740992和-9007199254740992之间的整数。您可以使用模数
%

$(“#cmd”)。单击(函数(e){ChectIfInteger($(“#txt”).val())});
函数ChectIfInteger(myval){
if(isNaN(myval)){
警报(“非整数(非数字)”)
}
否则{
//这是一个数字,但它是整数?
如果(myval%1==0){
如果(myval=-9007199254740992)
{
警报(“在javascript中是整数”);
}
否则{
警报(“非整数”);
}
}
否则{
警报(“不,不是整数”);
}
}
}

转换回字符串并比较:

String(parseInt("123"))=="123" // true
String(parseInt("123.sdfs"))=="123.sdfs" //false

我认为这是测试整数的最好方法:

function isInt(str) {
    if (typeof str !== 'number' && typeof str !== 'string') {
        return false;
    }

    return str % 1 === 0;
}

请注意,像“123.0”这样的字符串/数字的计算结果为
true

如果您真的想检查“是否为有效整数”,则必须将
isNaN
与以下类似内容结合使用:

function isValidInteger(numberToTest) {
  return !(isNaN(numberToTest) || String(parseInt(numberToTest)) !== numberToTest.toString());    
}
评估结果如下:

console.log(isValidInteger('123@231.23')); // false
console.log(isValidInteger('123231.23')); // false
console.log(isValidInteger('12323')); // true
console.log(isValidInteger(1e-1)); // false
console.log(isValidInteger('1e-1')); // false
这对数字也是有效的。
要测试。

这里还有一个不依赖字符串的东西:

function looksLikeInteger(n) {
  return +n == n && +n === ~~n;
}

可能应该称为“looksLikeJavaScriptInteger”,因为它只适用于32位整数。它使用一元
+
强制转换为数值,然后检查是否相等(因此会抛出难看的字符串和对象),然后检查以确保强制转换为整数时数值不会更改。

使用
parseInt
有什么错?我见过的用它来判断某个东西是否是数字的函数会说你的输入不是一。那么一些好的文档呢:@JaromandaX prototype@JaromandaX向你的创造者鞠躬我们接受的答案是错误的,请查看评论以了解原因
isNaN(“123”)
返回false,因为如果arg不是数字,则
isNaN
返回true。123是一个数字,所以它返回false。除非你知道你在测试什么,否则isNaN不是真正安全的。在本例中,这很好,但它并不是真正意义上的
isNaN
的意思。问题是询问整数,
isNaN()
并不能真正做到这一点。最好避免全局的
isNaN()
,因为它是一个容易混淆的特殊情况。这个答案是错误的,这只是检查数字,而不是整数,例如
isNaN(123231.23)
将产生
true
因为它是一个数字,但应该产生
false
,因为它不是整数<代码>isValidInteger(“1e-1”):)