2013-02-17 76 views
2

我基本上使用函數,如果其他語句來構建電力閱讀計算器。電單位計算器

給出的單位是1236是所謂elecReading的功能的參數。這將用作所用單位的數量,並將計算必須支付的金額。

然而,第一0-500單元在每單位$ 1計費。接下來的500-1000個單位的單位收費爲1.10美元,超過1000個單位的單位收費爲3.20美元。例如,如果我使用了1000個單位,我的帳單將是$ 1050。

我不確定我怎麼能得到這個工作,而無需手動打破1236爲單數號碼。我如何用JavaScript編寫這樣的計算器?

很顯然,我不要求完整的答案,但在正確的方向一推將在這個階段非常有幫助!

感謝您的幫助提前

+2

這是爲什麼被downvoted?這是一個非常好的問題。 – Brad 2013-02-17 20:17:48

+2

假設我已經使用了1000個單位。這是否意味着我的賬單是$ 500 + $ 550?或者是我的賬單$ 1100? – Brad 2013-02-17 20:20:23

+1

布拉德從我被告知它將是$ 1050 – 2013-02-17 20:29:29

回答

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 - 天道酬勤。顯然,這可以通過使用代表所述範圍內的價格範圍+單位價格的對象列表來更普遍地/以更少的硬編碼完成。

+0

呃,糾正了一個大錯誤,那裏不應該有任何'else'語句。很顯然,所有價格範圍內的單位都必須計算在內。 – millimoose 2013-02-18 10:23:32

-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)); 
+0

這是非常不正確的。 (考慮當'2000'單元用完時會發生什麼。) – millimoose 2013-02-17 21:08:22

+0

@millimoose:很好,我以前沒有意識到它..現在怎麼樣? – 2013-02-17 21:31:47

+0

對於'2000',當while循環運行兩次時,這纔是正確的。如果你嘗試更高的數字,比如'elecReading(3000)',它將最終計數幾個「峯值」單位兩次(或更多次)。在增加價格的同時,您無法繼續扣除1000個單位,您必須**將剩餘單位設置爲1000,一旦處理完剩餘單位,但剩下1000個單位。 – millimoose 2013-02-18 10:20:32