将NAN替换为0

时间:2013-01-28 21:57:13

标签: jquery math

我的脚本返回NAN,我希望它显示为0。

使用|| 0已经实现了这一点,但它现在为var%Q返回100而不是0。是什么导致它返回100?

$('#observationTotalRefresh').on('click', function () {

    var 
    sumP = 0,
    sumQ = 0,
    countP = 0,
    countQ = 0;

    $('.observationPositive:not(:disabled)').each(function(){
        countP++;
        sumP += Number($(this).val());
    });
    $('.observationQuestionable:not(:disabled)').each(function(){
        countQ++;
        sumQ += Number($(this).val());
    });

    var percentP = 100/(1 + (sumQ/sumP)) || 0;
    var percentQ = (100 - percentP) || 0;

    $("#observationPositivePercentage").text(percentP.toFixed(0));
    $("#observationQuestionablePercentage").text(percentQ.toFixed(0));
    $("#observationTotal").text(sumP + sumQ);
});

2 个答案:

答案 0 :(得分:0)

如果您对|| 0 percentP percentP,则确保percentQ始终为数字。因此,100 - percentP始终为percentP;如果percentQ为0,那么var percentP = 100 * sumP / (sumP + sumQ); 将为100.

但是,你的百分比数学看起来很奇怪。也许你想要

var percentP, percentQ;
if(sumP == 0 && sumQ == 0) {
    percentP = percentQ = 0;
} else {
    percentP = 100 * sumP / (sumP + sumQ);
    percentQ = 100 * sumQ / (sumP + sumQ);
}

代替?然后,它只是

{{1}}

答案 1 :(得分:0)

在这一行

var percentP = 100/(1 + (sumQ/sumP)) || 0;

sumQ/sumP0/0并返回NaN,导致等式中的其余部分评估为NaN,然后返回0

然后在这一行

var percentQ = (100 - percentP) || 0;

它将是100 - 0,即100