北京地鐵調價後的每個月地鐵費用如何算

2014-12-28,北京地鐵大調價。能夠經過這個地址來查單程票價:http://piaojia.bmncc.com.cn/算法

公告文以下:spa

    北京市公共交通價格新政
    於2014年12月28日起實施
    引京發改[2014]2526號
    地鐵票價: 6千米(含)內3元;6千米至12千米(含)4元;12千米至22千米(含)5元;22千米至32千米(含)6元;32千米以上部分,每增長1元可乘坐20千米。
    優惠政策: 使用市政交通一卡通刷卡乘坐軌道交通,每天然月內每張卡支出累計滿100元之後的乘次,價格給予8折優惠;滿150元之後的乘次,價格給予5折優惠;支出累計達到400元之後的乘次,再也不享受打折優惠。

code

其中,優惠政策的理解,容易引發誤會,例如,不優惠的話,一月要花220元,那優惠後的花費是多少?blog

容易誤寫的算法以下,它算出的結果是月消費175元:get

function getFavorableFee(fee){
    if (fee > 400) { 
        return fee-135; //(fee-400)+265;
    } else if (fee > 150) {
        return fee/2+65; //(fee-150)/2+140;
    }else if (fee > 100) {
        return fee*0.8+20;//(fee-100)*0.8+100;
    }else {
        return fee;
    }
}

因爲優惠政策上說的是「每天然月內每張卡支出累計滿」150至400元時,才按50%優惠,咱們在第十六天時,卡里累計支出才140元(優惠前應該150,因爲有優惠,實際只花了140元),因此仍是按80%來優惠。
即:第16日花的10元錢,是按80%優惠,而不是50%優惠。input

因此,算法須要調整一下,以下,新的結果是月消費178.75元it

function getFavorableFee2(fee){
    if (fee > 662.5) { //662.5 = 100 + 50/0.8 + 250/0.5
        return fee-262.5;
    } else if (fee > 162.5) { //162.5 = 100 + 50/0.8
        return fee/2+68.75; //(fee-162.5)/2+150;
    }else if (fee > 100) { 
        return fee*0.8+20;//(fee-100)*0.8+100;
    }else {
        return fee;
    }
}


總的示例以下:io

 

每日地鐵費:
每個月按22工做日算,每個月:
優惠後每個月(理論值,僅供參考):178.75
function

相關文章
相關標籤/搜索