2015-10-06 39 views
5

Bunu çalıştırırken, NaN döndürür. Eğer ayrıştırmazsam, 2 dizgiyi ekliyorum. Neyi kaçırıyorum? Sonuçların her zaman bir float olması gerektiğini söyleyebilirim?Javascript Float + Float = Dize?

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

değer yok NaN' 'eşittir. Hiç. – spender

+0

HTML'nin eklenmesi yardımcı olabilir (ve aynı zamanda giriş alanlarındaki değerler). –

cevap

7

Sen sayı değil doğru doğrulayarak değiliz. Bir numara olup olmadığını kontrol etmek NaNisNaN işlevini kullanın:

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

Not olduğunu NaN === NaN döner false hep.

Bu konu hakkında daha fazla bilgi bulabilirsiniz: Burada

Why is NaN === NaN false? tam kodudur:

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

Bir yazım hatası '(! IsNanN ('Olmalı' (! IsNaN (' right? – NewToJS

+0

@NewToJS Oh, teşekkürler! İyi gözler! :-) –

+0

Çok hoş geldiniz :) Basit bir hata. Bunu farketmek için iki kez bakmak zorundaydım. – NewToJS