2015-10-06 7 views
5

Wenn ich dies ausgeführt wird, gibt es NaN. Wenn ich nicht parseFloat, bekomme ich 2 Strings hinzugefügt. Was vermisse ich? Ich würde sagen, dass mein Ergebnis immer ein Float sein sollte?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

Kein Wert gleich 'NaN'. Je. – spender

+0

Das Hinzufügen des HTML kann helfen (und auch die Werte aus den Eingabefeldern). –

Antwort

7

Sie sind nicht Validierung korrekt keine Zahl. Um zu überprüfen, ob eine Zahl ist NaN verwenden, um die isNaN Funktion:

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

Beachten Sie, dass NaN === NaNfalse kehrt immer.

Sie können hier mehr über diese Zeilen lesen: Why is NaN === NaN false?

ist die komplette Code:

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

Sie haben einen Tippfehler '(! IsNanN (' Sollte '' sein!!!!!) – NewToJS

+0

@NewToJS Oh, danke! Gute Augen! :-) –

+0

Sehr willkommen :) Ein einfacher Fehler. Ich wusste, dass etwas fehl am Platz wirkte. Ich musste zweimal schauen, um es zu bemerken. – NewToJS