Code Kata:大整数四则运算—除法 javascript实现
2024-08-30 20:49:42
除法不可用手工算法来计算,其基本思想是反复做减法,看从被除数里面最多能减去多少个除数,商就是多少。
除法函数:
- 如果前者绝对值小于后者直接返回零
- 做减法时,不需要一个一个减,可以以除数*10^n为基数来减
function division(a, b) { /*输入两个字符串类型大数字*/ a = a.toString(); b = b.toString(); var sign = ''; if(a.indexOf('-') >= 0 && b.indexOf('-') < 0){ sign = '-'; a = a.substr(1);
}
else if(a.indexOf('-') < 0 && b.indexOf('-') >= 0){ sign = '-'; b = b.substr(1);
} if(a.indexOf('-') >= 0 && b.indexOf('-') >= 0){ a = a.substr(1); b = b.substr(1);
} if(compare(a,b) < 0){ /*绝对值a<b返回0*/ return 0;
} a = a.replace(/^0+/,''); b = b.replace(/^0+/,''); var divisionSub = function(x,y){ var returnRes = [0]; var xlen = x.length; var ylen = y.length; for(var i=0;i<xlen-ylen;i++){ if(compare(x,y + '0') >= 0){ y += "0"; returnRes.push(0);
}
} while(compare(x,y) >= 0){ returnRes[0] ++; x = subtraction(x,y);
} return {
remainder : x,
quotient : returnRes.join('')
}
} var divisionRes = '0'; var divisionSubRes = {
remainder: a,
quotient: '0'
} while(compare(divisionSubRes.remainder,b) >= 0){ divisionSubRes = divisionSub(divisionSubRes.remainder,b); divisionRes = addition(divisionRes,divisionSubRes.quotient); } return sign + divisionRes;
}
这样一来我们就已经有了大整数的四则运算的所有函数,可以将其封装起来,就成为了我们自己的一个简单的四则运算库。 代码详情可以查看github : https://github.com/yux357/my-code-kata/blob/master/arithmetic.js
如果喜欢我的文章,可以扫描二维码关注我的微信公众号
争取每天都分享一点我自己的开发和练习体验~

最新文章
- ajax post提交form表单 报400错误 解决方法
- Python-Django进阶
- poj 1270(toposort)
- java应用死循环排查方法或查找程序消耗资源的线程方法(面试)
- c# .NET 进行数据库备份和还原
- unity3d遍历出Cube里面所有子对象
- QT5中的pro文件中为何要加入";QT += widgets";
- ABP+AdminLTE+Bootstrap Table权限管理系统第五节--WBEAPI及SwaggerUI
- C#将dataGridView中显示的数据导出到Excel(大数据量超有用版)
- Wireshark理解TCP乱序重组和HTTP解析渲染
- tar: Exiting with failure status due to previous errors
- OJ题解记录计划
- 下载编译安装Apache HTTP Server 2.4.23以及配置HTTP/HTTPS反向代理
- Jenkins配置项目构建后的钉钉通知
- socket can demo
- MySQL学习(一)——Java连接MySql数据库
- 【BZOJ4545】DQS的trie 后缀自动机+LCT
- php中::是什么意思?
- 【SPOJ】Count On A Tree II(树上莫队)
- 适配器模式 C#