var num = "10.00";
if(!parseFloat(num)>=0)
{
alert("NaN");
}
else
{
alert("Number");
}
値が浮動小数点数でないかどうかを確認したいのですが、上記のコードは常に を返しますNaN
。何が間違っているのでしょうか?
var num = "10.00";
if(!parseFloat(num)>=0)
{
alert("NaN");
}
else
{
alert("Number");
}
値が浮動小数点数でないかどうかを確認したいのですが、上記のコードは常に を返しますNaN
。何が間違っているのでしょうか?
!parseFloat(num)
false
あなたが比較しているのはそうですfalse >= 0
あなたはこれを行うことができます:
if(! (parseFloat(num)>=0))
しかし、これを行う方が読みやすいでしょう:
if(parseFloat(num) < 0)
parseFloat
float または のいずれかを返しますNaN
が、ブール NOT 演算子!
をそれに適用してから、別の浮動小数点と比較しています。
おそらく、次のようなものが必要です。
var num = "10.0";
var notANumber = isNaN(parseFloat(num));
!
は よりも優先順位が高いため>=
、コードはそうします
!parseFloat(num)
これはfalse
それで
>= 0
、false
は に強制され0
、0 >= 0
真であるため、alert("NaN")
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence
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);
}
}