锋利的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;
有了这款神器,是不是再也不用担心找错钱了?我还是比较喜欢收银员给我多找点钱:)
如果觉得对你有帮助,请点个赞,谢谢!
不足与错误之处,敬请批评指正!
标签:
js
posted on 2015-05-31 13:28 xiaoafei1991 阅读(571) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?