2014-12-28,北京地鐵大調價。可以通過這個地址來查單程票價:http://piaojia.bmncc.com.cn/
公告文如下:
北京市公共交通價格新政
於2014年12月28日起實施
引京發改[2014]2526號
地鐵票價: 6公里(含)內3元;6公里至12公里(含)4元;12公里至22公里(含)5元;22公里至32公里(含)6元;32公里以上部分,每增加1元可乘坐20公里。
優惠政策: 使用市政交通一卡通刷卡乘坐軌道交通,每自然月內每張卡支出累計滿100元以后的乘次,價格給予8折優惠;滿150元以后的乘次,價格給予5折優惠;支出累計達到400元以后的乘次,不再享受打折優惠。
其中,優惠政策的理解,容易引起誤會,例如,不優惠的話,一月要花220元,那優惠后的花費是多少?
容易誤寫的算法如下,它算出的結果是月消費175元:
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%優惠。
所以,算法需要調整一下,如下,新的結果是月消費178.75元
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; } }
總的示例如下:
每日地鐵費:。
每月按22工作日算,每月:。
優惠后每月(理論值,僅供參考):178.75