• 锋利的js之妈妈再也不用担心我找错钱了


    用js实现收银功能。

     1 <!DOCTYPE html>
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4     <title>xx超市收银系统</title>
     5     <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js">
     6     </script>
     7     <script type="text/javascript">
     8         $(function () {
     9             $('form').submit(function () {
    10                 var payable = Number($('#txtPayable').val());//应付
    11                 var payment = Number($('#txtPayment').val());//实付
    12                 if (payable === payment) {
    13                     $('#tdPocket').text(0);
    14                 } else if (payable > payment) {
    15                     $('#tdPocket').text('您还需再支付' + (payable*10 - payment*10)/10 + '元!');
    16                 } else {//需要找零
    17                     var yuan = [100, 50, 20, 10, 5, 1];
    18                     var jiao = [5, 2, 1];
    19                     var msg = '';
    20                     var payableYuan = parseInt(payable);
    21                     var paymentYuan = parseInt(payment);
    22                     var pocketYuan = paymentYuan - payableYuan;//找零元
    23                     var surplus = pocketYuan;
    24                     $(yuan).each(function() {
    25                             if (surplus >= this) {
    26                                 var count = parseInt(surplus / this);
    27                                 msg += this + '' + count + '';
    28                                 surplus -= count * this;
    29                             }
    30                     });
    31                     //在js中10.2-10.1=0.09999999999999964,防止小数误差,需要*10
    32                     var pocketJiao = parseInt(((payment * 10) - (payable * 10)) - (pocketYuan * 10));//找零角
    33                     surplus = pocketJiao;
    34                     $(jiao).each(function () {
    35                         if (surplus >= this) {
    36                             var count = parseInt(surplus / this);
    37                             msg += this + '' + count + '';
    38                             surplus -= count * this;
    39                         }
    40                     });
    41                     msg += '' + pocketYuan + '.' + pocketJiao + '';
    42                     $('#tdPocket').text(msg);
    43                 }
    44                 return false;
    45             });
    46         });
    47     </script>
    48     <style type="text/css">
    49         table {
    50             border: 1px solid #0000cd;
    51         }
    52 
    53         td {
    54             padding: 2px;
    55         }
    56 
    57         .right {
    58             text-align: right;
    59         } 
    60 
    61         .left {
    62             text-align: left;
    63             width: 50px;
    64         }
    65 
    66         .center {
    67             text-align: center;
    68         }
    69     </style>
    70 </head>
    71 <body>
    72     <form>
    73         <table border="1" cellpadding="0" cellspacing="0">
    74             <tr>
    75                 <td class="right">应付:</td>
    76                 <td class="left"><input type="number" id="txtPayable" min="0" step="any" /></td>
    77             </tr>
    78             <tr>
    79                 <td class="right">实付:</td>
    80                 <td class="left"><input type="number" id="txtPayment" min="0" step="any" /></td>
    81             </tr>
    82             <tr>
    83                 <td class="right">找零:</td>
    84                 <td class="left" id="tdPocket"></td>
    85             </tr>
    86             <tr>
    87                 <td colspan="2" class="center"><input type="submit" value="计算" id="btnCalc" /></td>
    88             </tr>
    89         </table>
    90     </form>
    91 </body>
    92 </html>

    效果

    样式有点丑,没时间去调。

    找零时,从最大面值的钱开始找,找零5.1,找一张5元,而不是找5张1元。

    只考现行的第五套人民币面值,不考虑分币,目前几乎不怎么流通分币了。

    重点是算出零钱该找出x张y面值的钱,由于js对于小数计算有误差,需要先将小数换算成整数,再转成小数.

    js中10.2-10.1结果是0.09999999999999964;

    要想得到结果0.1,笨一点的办法(10.2*10-10.1*10)/10=0.1;

    有了这款神器,是不是再也不用担心找错钱了?我还是比较喜欢收银员给我多找点钱:)

    如果觉得对你有帮助,请点个赞,谢谢!

    不足与错误之处,敬请批评指正!

  • 相关阅读:
    [LeetCode] 771. Jewels and Stones
    [LeetCode] 129. Sum Root to Leaf Numbers
    java定时器demo
    Spring Boot与监控管理
    springboot与热部署
    springboot中的web项目不能访问templates中的静态资源
    @Component 和 @Bean 的区别
    springcluoud入门
    Dubbo和Zookerper的关系
    Spring boot配置Dubbo三种方式
  • 原文地址:https://www.cnblogs.com/xiaoafei1991/p/4541871.html
Copyright © 2020-2023  润新知