锋利的js之妈妈再也不用担心我找错钱了
用js实现收银功能。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>xx超市收银系统</title>
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js">
</script>
<script type="text/javascript">
$(function () {
$('form').submit(function () {
var payable = Number($('#txtPayable').val());//应付
var payment = Number($('#txtPayment').val());//实付
if (payable === payment) {
$('#tdPocket').text(0);
} else if (payable > payment) {
$('#tdPocket').text('您还需再支付' + (payable*10 - payment*10)/10 + '元!');
} else {//需要找零
var yuan = [100, 50, 20, 10, 5, 1];
var jiao = [5, 2, 1];
var msg = '';
var payableYuan = parseInt(payable);
var paymentYuan = parseInt(payment);
var pocketYuan = paymentYuan - payableYuan;//找零元
var surplus = pocketYuan;
$(yuan).each(function() {
if (surplus >= this) {
var count = parseInt(surplus / this);
msg += this + '元' + count + '张';
surplus -= count * this;
}
});
//在js中10.2-10.1=0.09999999999999964,防止小数误差,需要*10
var pocketJiao = parseInt(((payment * 10) - (payable * 10)) - (pocketYuan * 10));//找零角
surplus = pocketJiao;
$(jiao).each(function () {
if (surplus >= this) {
var count = parseInt(surplus / this);
msg += this + '角' + count + '张';
surplus -= count * this;
}
});
msg += '共' + pocketYuan + '.' + pocketJiao + '元';
$('#tdPocket').text(msg);
}
return false;
});
});
</script>
<style type="text/css">
table {
border: 1px solid #0000cd;
} td {
padding: 2px;
} .right {
text-align: right;
} .left {
text-align: left;
width: 50px;
} .center {
text-align: center;
}
</style>
</head>
<body>
<form>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td class="right">应付:</td>
<td class="left"><input type="number" id="txtPayable" min="0" step="any" /></td>
</tr>
<tr>
<td class="right">实付:</td>
<td class="left"><input type="number" id="txtPayment" min="0" step="any" /></td>
</tr>
<tr>
<td class="right">找零:</td>
<td class="left" id="tdPocket"></td>
</tr>
<tr>
<td colspan="2" class="center"><input type="submit" value="计算" id="btnCalc" /></td>
</tr>
</table>
</form>
</body>
</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之妈妈再也不用担心我找错钱了的更多相关文章
- 妈妈再也不用担心我找不到spring源码了!
获取spring源码: http://repo.springsource.org/libs-release-local/ http://repo.springsource.org/libs-relea ...
- 有了 tldr,妈妈再也不用担心我记不住命令了
引言 有一次我在培训时说「程序员要善于使用 Terminal 以提高开发效率」,一位程序员反驳道:「这是 21 世纪,我们为什么要用落后的命令行,而不是先进的 GUI?」 是的,在一些人眼里,这个黑黑 ...
- 妈妈再也不用担心别人问我是否真正用过redis了
1. Memcache与Redis的区别 1.1. 存储方式不同 1.2. 数据支持类型 1.3. 使用底层模型不同 2. Redis支持的数据类型 3. Redis的回收策略 4. Redis小命令 ...
- 妈妈再也不用担心我使用git了
妈妈再也不用担心我使用git了 Dec 29, 2014 git git由于其灵活,速度快,离线工作等特点而倍受青睐,下面一步步来总结下git的基本命令和常用操作. 安装msysgit 下载地址:ms ...
- 利用CH341A编程器刷新BIOS,恢复BIOS,妈妈再也不用担心BIOS刷坏了
前几天,修电脑主析就捣鼓刷BIOS,结果刷完黑屏开不了机,立刻意识到完了,BIOS刷错了.就从网上查资料,各种方法试了个遍,什么用处都没有.终于功夫不负有心人,找到了编码器,知道了怎么用.下面看看具体 ...
- python爬虫07 | 有了 BeautifulSoup ,妈妈再也不用担心我的正则表达式了
我们上次做了 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍 有些朋友觉得 利用正则表达式去提取信息 太特么麻烦了 有没有什么别的方式 更方便过滤我们想要的内容啊 emmmm 你还别说 还 ...
- 有了jsRender,妈妈再也不用担心我用jq拼接DOM拼接的一团糟了、页面整齐了、其他伙伴读代码也不那么费劲了
写在前面 说来也很巧, 下午再做一个页面,再普通不过的分页列表,我还是像往常一样,基于MVC环境下,我正常用PagedList.MVC AJAX做无刷新分页,这时候问题就来了,列表数据中有个轮播图用到 ...
- 妈妈再也不用担心我的移动端了:网易和淘宝的rem方案剖析
从博主学习前端一路过来的经历了解到,前端移动开发是大部分从PC端转战移动端的小伙伴都非常头疼的一个问题,这边博主就根据一篇自己看过的移动开发文章来剖析一下网易和淘宝的rem解决方案,希望能够帮助到一些 ...
- 【C#】妈妈再也不用担心自定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚
------------------更新:201411190903------------------ 经过思考和实践,发现套路中的第1条是不必要的,就是完全可以不用定义一个名为Default+属性名 ...
随机推荐
- Java笔记3-for,switch循环,格式化输出,随机数
大纲:一.分支结构 if switch二.循环 for while do while break continue三.格式化输出 [printf] int score = 100; String na ...
- x-code快捷键
关于xcode 可设偏好设置 command+,清空缓存 可设隐藏xcode command+h隐藏其它 command+option+h显示全部 可设退出xcode command+q 文件相关: ...
- windows环境下 svn 客户端
- MFC各种控件的常见操作(逐步添加中......)
由于经常切换系统或界面框架进行编程,难免有时会忘记之前的编程函数等等.所有在此自己做一个备份,以防止重新充电带来的痛苦! 1.CButton 1.1 在VC中编程实现按钮的启用(enable)和禁用( ...
- Spring源码学习之:ClassLoader学习(2)
转载:http://longdick.iteye.com/blog/332580 大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个 ...
- 几个排序算法的python实现
几个排序算法 几个排序算法 几个排序算法 冒泡排序 选择排序 插入排序 快速排序 quick sort 冒泡排序 冒泡排序是比较简单的排序方法,它的思路是重复的走过要排序的序列,一次比较两个元 ...
- putty连接ubuntu虚拟机缓慢问题的解决
vmware安装系统使用了ubuntu,安装后每次用PUTTY登录发现都到等很久,经过上网搜索,发现是Ubuntu安全机制导致的连接缓慢问题, 解决方法如下; 1. sudo vim /etc ...
- 【转载】芯片级拆解51、AVR、MSP430、凌阳61、PIC,5种单片机,多张显微照片
先秀一张解剖照,放大裁剪,小米1S微距拍摄,800万像素摄像头很给力!今天等待被拆的是5个单片机芯片:(1)凌阳16位单片机SPCE061A ,这是我接触的第一个单片机,最高主频49MHz,32KB的 ...
- NserviceBus+rabbitmq
Ok so I figured this out after looking a bit at the code and the requirements for amqp URI and it sh ...
- main 方法,
默认是设置是alt / 就是你打出main以后按(alt /)