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

parseFloatfloat または のいずれかを返しますNaNが、ブール NOT 演算子!をそれに適用してから、別の浮動小数点と比較しています。

おそらく、次のようなものが必要です。

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

!は よりも優先順位が高いため>=、コードはそうします

!parseFloat(num)これはfalse

それで

>= 0falseは に強制され00 >= 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);
 }
}

ref

于 2012-05-18T08:55:01.233 に答える