zoukankan      html  css  js  c++  java
  • 锋利的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;

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

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

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

  • 相关阅读:
    Exadata存储节点的CPU限制成功了没?
    如何减少Exadata计算节点CPU的Core数量
    如何选择适合你的HTAP数据库?
    小知识:Oracle中的层次查询
    小知识:使用MOS下载Oracle介质快速参考
    小知识:Flex ASM特性对集群资源显示的影响
    javaWeb request请求乱码、response响应中文乱码一站式解决方案
    java 文件File与byte[]数组相互转换的两种方式
    pr 如何调高导出视频的清晰度?
    pr 剪辑视频之剃刀用法
  • 原文地址:https://www.cnblogs.com/xiaoafei1991/p/4541871.html
Copyright © 2011-2022 走看看