zoukankan      html  css  js  c++  java
  • 北京地铁调价后的每月地铁费用如何算

    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

  • 相关阅读:
    Rehosting WWF 设计器
    C#写的ActiveX弹出窗口在Delphi程序中的应用时出现了问题。
    WWF的一些技术细节与应用体会(一)
    字符串编码与未公开的DBCSCodePageEncoding
    WF的一些技术细节与应用体会(三)
    Rehosting WWF Designer 之定制活动的外观
    WWF的一些技术细节与应用体会(二)
    DataJoin: Replicated join using DistributedCache
    MultipleOutputFormat和MultipleOutputs
    DataJoin: Reduceside join
  • 原文地址:https://www.cnblogs.com/jkisjk/p/4158531.html
Copyright © 2011-2022 走看看