【问题标题】:Javascript Float + Float = String?Javascript浮点+浮点=字符串?
【发布时间】:2016-01-03 04:14:41
【问题描述】:

当我运行它时,它返回NaN。如果我不解析浮动,我会添加 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。永远。
  • 添加 HTML 可能会有所帮助(以及输入字段中的值)。

标签: javascript jquery nan


【解决方案1】:

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

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

注意NaN === NaN 总是返回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;
}

【讨论】:

  • 你打错了(!isNanN( 应该是(!isNaN( 对吧?
  • 非常欢迎 :) 简单的错误。我知道有些东西看起来不合适,我必须仔细观察才能注意到它。
  • 现在工作。非常感谢! :) 已接受答案。
猜你喜欢
  • 2018-03-08
  • 2014-09-25
  • 2021-10-09
  • 2011-11-25
  • 2018-01-28
  • 2012-06-04
  • 2019-08-13
  • 2019-11-28
  • 2019-04-19
相关资源
最近更新 更多