Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript Float + Float = String?

When I am running this, it returns NaN. If I do not parseFloat, I'm getting 2 strings added. What am I missing? I would say that my result should always be a float?

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;
}
like image 513
user3314032 Avatar asked Oct 06 '15 09:10

user3314032


Video Answer


1 Answers

You're not validating not a number correctly. To check if a number is NaN use the isNaN function:

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

Note that NaN === NaN returns false always.

You can read more about this here: Why is NaN === NaN false?

Here is the complete 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;
}
like image 85
Ionică Bizău Avatar answered Oct 04 '22 10:10

Ionică Bizău