Javascript 浮点数 + 浮点数 = 字符串?

Javascript Float + Float = String?

当我运行这个,它returnsNaN。如果我不 parseFloat,我将添加 2 个字符串。我错过了什么?我会说我的结果应该总是一个浮点数?

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;
}

您没有正确验证不是数字。要检查数字是否为 NaN,请使用 isNaN 函数:

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

请注意 NaN === NaN returns 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;
}