JavaScript数学计算案例

时间:2014-02-06 01:03:07

标签: javascript jquery

我需要做一个类似这样的JavaScript计算:

1-500,000点$ 30 / 100,000点

500,001-999,999分25美元/ 100,000点

1,000,000+点$ 20 / 100,000点

我有一个案例开关,它将检查值然后得到正确的总和,但我想知道如何做,例如,如果用户输入4,500,000点或一些超过1,100,000的随机值。

这就是我目前的情况:

  if (Number(amountOfPoints) > Number(0)) {
    switch (true) {
        case (amountOfPoints > 0 && amountOfPoints <= 100000):
            {
                price = 30;
                break;
            }
        case (amountOfPoints > 100000 && amountOfPoints <= 200000):
            {
                price = 60;
                break;
            }
        case (amountOfPoints > 200000 && amountOfPoints <= 300000):
            {
                price = 90;
                break;
            }
        case (amountOfPoints > 300000 && amountOfPoints <= 400000):
            {
                price = 120;
                break;
            }
        case (amountOfPoints > 400000 && amountOfPoints < 500000):
            {
                price = 150;
                break;
            }
        case (amountOfPoints > 500000 && amountOfPoints < 600000):
            {
                price = 150;
                break;
            }
        case (amountOfPoints > 600000 && amountOfPoints < 700000):
            {
                price = 160;
                break;
            }
        case (amountOfPoints > 700000 && amountOfPoints < 800000):
            {
                price = 185;
                break;
            }
        case (amountOfPoints > 800000 && amountOfPoints < 900000):
            {
                price = 210;
                break;
            }
        case (amountOfPoints > 900000 && amountOfPoints < 1000000):
            {
                price = 235;
                break;
            }
        case (amountOfPoints <= 1000000):
            {
                tweetsPrice = 200;
                break;
            }
        default:
            price = 0;
            break;
    }
}

如何计算积分是否> 1,100,000?它应该每增加100,000美元增加20美元。

更新

也许我不清楚我需要什么。这就是我需要的:一旦价值超过1,100,000,相应计算的价格,例如1,100,001和1,200,000之间的价格将是220美元,1,200,001和1,300,000之间的点数将是240美元等,没有限制,所以例如4,500,001和4,600,000的价格将为720美元。

3 个答案:

答案 0 :(得分:0)

Here is the jsfiddle.您可以输入积分并查看奖励值。

你的积分系统似乎是随意的,所以我改为总是从1开始而不是0时开始,有时是1.如果你不喜欢它,那么你可以改变功能。

function points(inText) {
    var inNum = (isNaN(Number(inText))) ? 0 : Math.floor(Number(inText));
    inNum = Math.floor(inNum / 100000);
    if (inNum < 5) {
        inNum = inNum * 30;
    } else {
        if (inNum < 10) {
            inNum = (inNum - 5) * 25 + 150;
        } else {
            inNum = (inNum - 10) * 20 + 275;
        }
    }  
    return inNum;
}

答案 1 :(得分:0)

通常,它的工作方式如下:

function calcPrice(value) {
  if (value <= 500000) {
    return 30 * Math.ceil(value / 100000);
  } else if (value <= 1000000) {
    return 150 + 25 * Math.ceil((value - 500000) / 100000);
  } else {
    return 275 + 20 * Math.ceil((value - 1000000) / 100000);
  }
}

但是按照你的帖子的信件:

function calcPrice(value) {
  if (value <= 500000) {
    return 30 * Math.ceil(value / 100000);
  } else if (value <= 1000000) {
    return 25 * Math.ceil(value / 100000);
  } else {
    return 20 * Math.ceil(value / 100000);
  }
}

答案 2 :(得分:-1)

我有点累了,但我认为这可能适用于任何amountOfPoints:

var price = 30,
    strPoints = amountOfPoints.toString(),
    points = Number(amountOfPoints);

if (points >= 100000) {
  var multiplier = Number(points.toString().substring(0, 5 - strPoints.length));
  price += 20 * multiplier;
}

基本上只做price = 30 + 20 * the_significant_digits_of_amountOfPoints,其中amountOfPoints大于100,000。当有6位数时,子串部分给出1,当有7位时给出2,依此类推。

这适用于用例“每100,000个应该增加20美元”。但是您的案例陈述将价值分配给不遵循此模式的价格。因此,在您的积分足够大以超过其中的条件之后,您必须使用此代码。