2
var num = "10.00";
if(!parseFloat(num)>=0)
{
    alert("NaN");
}
else
{
    alert("Number");
}

我想检查一个值是否不是浮点数,但上面的代码总是返回NaN,有什么想法我做错了吗?

4

4 回答 4

4

!parseFloat(num)所以false你在比较false >= 0

你可以这样做:

if(! (parseFloat(num)>=0))

但这样做会更具可读性:

if(parseFloat(num) < 0)
于 2012-05-18T08:46:26.397 回答
3

parseFloat返回一个 float 或NaN,但您正在对其应用布尔 NOT 运算符!,然后将其与另一个浮点进行比较。

您可能想要更多类似的东西:

var num = "10.0";
var notANumber = isNaN(parseFloat(num));
于 2012-05-18T08:48:03.597 回答
1

因为!具有比 更高的优先级>=,所以您的代码确实

!parseFloat(num)这是false

然后

>= 0,false被强制转换为0, 并且0 >= 0为真, 因此alert("NaN")

https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence

于 2012-05-18T08:47:38.173 回答
0
function isFloat(value) {
  if(!val || (typeof val != "string" || val.constructor != String)) {
  return(false);
  }
  var isNumber = !isNaN(new Number(val));
     if(isNumber) {
        if(val.indexOf('.') != -1) {
           return(true);
        } else {
           return(false);
        }
     } else {
  return(false);
 }
}

参考

于 2012-05-18T08:55:01.233 回答