2015-10-06 8 views
5

これを実行すると、NaNが返されます。私がparseFloatをしないと、2つの文字列が追加されています。私は何が欠けていますか?私の結果は常にフロートでなければならないと言いますか?Javascript Float + Float = String?

function calculate(i) { 
    var result = 0.0; 
    $j(".t" + i + " input").each(function() { 
     var number = $j(this).val(); 
     number = number.replace(",", "."); 

     if (parseFloat(number) != NaN) { 
      result = parseFloat(result); 
      number = parseFloat(number); 
      result += number; 
     } 
    }); 
    console.log(result); 
    return result; 
} 
+0

ませ値がNaN' '等しくありません。これまで – spender

+0

HTMLを追加すると、入力フィールドの値も役立ちます。 –

答えて

7

あなたは数ではなく正しくを検証していません。 NaN === NaN戻っ常にfalseこと

if (!isNaN(parseFloat(number))) { ... } 

注:数値はisNaN機能を使用NaNであるかどうかを確認するには。

あなたはここにこの詳細を読むことができます:ここで

Why is NaN === NaN false?は完全なコードです:

function calculate(i) { 
    var result = 0; 
    $j(".t" + i + " input").each(function() { 
     var number = $j(this).val(); 
     number = parseFloat(number.replace(",", ".")); 

     if (isNaN(number)) { 
      return; 
     } 
     result += number; 
    }); 
    console.log(result); 
    return result; 
} 
+0

あなたはタイプミスがあります。(!isNanN( 'isNaN(' is?)(ノーマル? – NewToJS

+0

@NewToJSああ、ありがとう!Good eyes!:-) –

+0

非常に歓迎:)簡単な間違い。 – NewToJS