2015-10-06 20 views
5

Quando eseguo ciò, restituisce NaN. Se non analizzo Float, sto aggiungendo 2 stringhe. Cosa mi manca? Direi che il mio risultato dovrebbe sempre essere un galleggiante?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

Nessun valore è uguale a 'NaN'. Mai. – spender

+0

L'aggiunta dell'HTML può aiutare (e anche i valori dei campi di input). –

risposta

7

Non stai convalidare non un numero correttamente. Per verificare se un numero è NaN utilizzare la funzione isNaN:

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

Nota che NaN === NaN rendimenti false sempre.

Potete leggere di più su questo qui: Why is NaN === NaN false?

Ecco il codice completo:

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

Hai un errore di battitura '(! IsNanN (' Dovrebbe essere '(! IsNaN (' giusto? – NewToJS

+0

@NewToJS Oh, grazie! Buoni occhi! :-) –

+0

Molto benvenuto :) Semplice errore. Sapevo che qualcosa sembrava fuori posto, Ho dovuto dare un'occhiata due volte per notarlo – NewToJS