电力单位计算器

时间:2013-02-17 20:15:56

标签: javascript function parameters units-of-measurement

我基本上使用函数,如果使用if语句来构建电力读数计算器。

给出的单位是1236,这是一个名为elecReading的函数的参数。这将用作使用的单位数量,它将计算必须支付的金额。

然而,首批0-500个单位的单价为1美元。接下来的500-1000个单位的单价为1.10美元,超过1000个单位的单位为3.20美元。例如,如果我使用1000个单位,我的账单将是1050美元。

我不确定如何在不将1236手动分解为单数的情况下实现此功能。如何使用JavaScript编写这样的计算器?

显然我不是要求完整的答案,但在这个阶段向正确的方向推进将非常有帮助!

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

静态版本类似于:

var UNIT_PRICE_1001_OVER = 3.20;
var UNIT_PRICE_501_1000 = 1.10;
var UNIT_PRICE_UNDER_500 = 1.00;
function elecReading(units) {
    var price = 0;

    if (units > 1000) {
        price += (units-1000) * UNIT_PRICE_1001_OVER;
        units = 1000;
    }
    if (units > 500) {
        price += (units - 500) * UNIT_PRICE_501_1000;
        units = 500;
    }
    price += units * UNIT_PRICE_UNDER_500;

    return price;
}

假设单价范围为1-500,501-1000,1001-Inf。显然,这可以通过更少的硬编码来完成,使用代表价格范围的对象列表+在所述范围内的每单位价格。

答案 1 :(得分:-1)

尝试以下功能。假设峰值速率来自1000+单位,中等速率来自501-1000,非线性速率来自0-500。

您可以根据您的要求/理解更改变量名称。

<强>编辑: 添加循环以保持减少总单位直到它们大于1000

       function elecReading(units){

        var totalUnits=units;
        var offPeakRate=1;
        var mediumRate=1.10;
        var peakRate=3.20;
        var totalCharges=0;

        if(totalUnits>1000){
            PeakUnits = totalUnits-1000;
            totalCharges = totalCharges + (PeakUnits * peakRate);
            totalUnits = 1000;
        }

        if(totalUnits > 500){
            totalUnits = totalUnits-500;
            totalCharges =  totalCharges + (totalUnits * mediumRate);
        }  

        totalCharges = totalCharges + (totalUnits * offPeakRate); 

        return totalCharges;
    } 
  console.log(elecReading(2000));