我基本上使用函数和 if else if 语句来构建电力读数计算器。
给出的单位是 1236,它是 elecReading 函数的参数。这将用作使用的单位数量,并将计算必须支付的金额。
但是,前 0-500 个单位的收费为每单位 1 美元。接下来的 500-1000 个单位的收费为每单位 1.10 美元,超过 1000 个单位的收费为每单位 3.20 美元。例如,如果我使用 1000 单位,我的账单将为 1050 美元。
我不确定如何在不手动将 1236 分解为单数的情况下使其工作。如何用 JavaScript 编写这样的计算器?
显然我并不要求完整的答案,但在这个阶段朝正确的方向推动会非常有帮助!
感谢您提前的帮助
静态版本类似于:
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。显然,这可以更普遍/更少的硬编码来完成,使用表示价格范围+所述范围内的每单位价格的对象列表。
将设备功率(千瓦)乘以使用时间(小时)。 这给出了能量消耗(以千瓦时为单位)。 将能耗乘以每千瓦时的成本。 结果是设备的总电费。
尝试以下功能。假设高峰费率为 1000+ 单位,中等费率为 501-1000,非高峰费率为 0-500。
您可以根据您的要求/理解更改变量名称。
编辑: 添加 while 循环以不断减少总单位数,直到它们大于 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));