2

私は基本的に関数と if else if ステートメントを使用して電気読み取り計算機を作成しています。

指定された単位は、elecReading という関数のパラメーターである 1236 です。これは、使用されたユニットの量として使用され、支払われなければならない金額が計算されます。

ただし、最初の 0 ~ 500 ユニットは 1 ユニットあたり $1 で請求されます。次の 500 ~ 1000 ユニットは 1 ユニットあたり 1.10 ドルで請求され、1000 ユニットを超えるユニットは 1 ユニットあたり 3.20 ドルで請求されます。たとえば、1000 ユニットを使用した場合、請求額は 1050 ドルになります。

1236 を手動で単数に分解せずにこれを機能させる方法がわかりません。JavaScript でこのような電卓を作成するにはどうすればよいですか?

明らかに、私は完全な答えを求めているわけではありませんが、この段階で正しい方向へのプッシュは非常に役立ちます!

事前に助けてくれてありがとう

4

2 に答える 2

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 であることを前提としています。明らかに、これはより一般的に/より少ないハードコーディングで行うことができ、価格範囲を表すオブジェクトのリストとその範囲内の単位あたりの価格を使用します。

于 2013-02-17T20:36:23.900 に答える
-1

次の関数を試してください。ピーク レートがユニット 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));
于 2013-02-17T20:51:11.197 に答える