Javascript 为什么我检查浮动的测试总是返回false?

Javascript 为什么我检查浮动的测试总是返回false?,javascript,Javascript,我创建了一个javascript方法来检查一个数字是否是浮点数。每次我测试该方法的浮点值时,它总是返回FALSE。我不确定我在这里做错了什么。任何帮助都将不胜感激 下面是我的代码。。谢谢 function isFloat(n){ var patt = new RegExp('[+-]([0-9]*[.])?[0-9]+'); return patt.test(n) } console.log(isFloat(12.40)); 有一种更简单的方法来检查数字是否是浮点数。只

我创建了一个javascript方法来检查一个数字是否是浮点数。每次我测试该方法的浮点值时,它总是返回FALSE。我不确定我在这里做错了什么。任何帮助都将不胜感激

下面是我的代码。。谢谢

function isFloat(n){

    var patt =  new RegExp('[+-]([0-9]*[.])?[0-9]+');
    return patt.test(n)
}


console.log(isFloat(12.40));

有一种更简单的方法来检查数字是否是浮点数。只需将下限值与原始值进行比较。如果它们是一样的,那就是一个整数

函数isFloat(n){
返回数学。楼层(n)!==n;
}
console.log(isFloat(1));
console.log(isFloat(1.2));
console.log(isFloat(12));

console.log(isFloat(12.4))有一种更简单的方法来检查数字是否是浮点数。只需将下限值与原始值进行比较。如果它们是一样的,那就是一个整数

函数isFloat(n){
返回数学。楼层(n)!==n;
}
console.log(isFloat(1));
console.log(isFloat(1.2));
console.log(isFloat(12));

console.log(isFloat(12.4))您的正则表达式是错误的,应该是错误的

/[+-]?\d+\.\d+/g

此外,正如其他人所指出的,这并不是解决这一问题的最佳办法。使用
!Number.isInteger(num)
您的正则表达式是错误的,应该是错误的

/[+-]?\d+\.\d+/g

此外,正如其他人所指出的,这并不是解决这一问题的最佳办法。使用
!Number.isInteger(num)

问题在于
toString
没有在数字前插入
'+'

12.40.toString(); // "12.4", not "+12.4"
所以你可以使用一个正则表达式,比如

new RegExp('[+-]?([0-9]*[.])?[0-9]+');

但是,我建议问题在于
toString
不会在数字前插入
'+'

12.40.toString(); // "12.4", not "+12.4"
所以你可以使用一个正则表达式,比如

new RegExp('[+-]?([0-9]*[.])?[0-9]+');

然而,我建议你为什么要使用
新的Regexp(…)
当你可以只使用
/…/g
的时候?不知道你的意思是什么?你为什么不试试这个:看,你可以像我上面写的那样,通过将它插入2
/
中来创建一个regex。然后,您可以在它的末尾添加标志您的正则表达式看起来像是要检查字符串是否为数字,但您的描述像是要检查数字是否为整数。我很困惑。当你可以使用
/…/g
时,为什么要使用
新的Regexp(…)
呢?不知道你的意思是什么?为什么不试试这个:看,你可以像我上面写的那样,通过在2
//code>中插入它来创建一个regex。然后,您可以在它的末尾添加标志您的正则表达式看起来像是要检查字符串是否为数字,但您的描述像是要检查数字是否为整数。我很困惑。仅供参考。
isFloat('a')==true
(你难道不喜欢
NaN
?!:P)@PhilVarg
12.0===12
所以它实际上是一个整数,只要你关心实际值而不是字符串表示。非常感谢Mike C!仅供参考。
isFloat('a')==true
(你难道不喜欢
NaN
?!:P)@PhilVarg
12.0==12
,所以它实际上是一个整数,只要你关心实际值而不是字符串表示。非常感谢Mike C!