2015-10-06 64 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使用isNaN功能:

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

注意NaN === NaN回報false始終。

你可以閱讀更多關於此這裏: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('對嗎? – NewToJS

+0

@NewToJS哦,謝謝!好眼睛!:-) –

+0

非常歡迎:)簡單的錯誤。我知道一些看起來不合適的地方,我不得不看兩次才能注意到它 – NewToJS