除法不可用手工算法来计算,其基本思想是反复做减法,看从被除数里面最多能减去多少个除数,商就是多少。

除法函数:

  • 如果前者绝对值小于后者直接返回零
  • 做减法时,不需要一个一个减,可以以除数*10^n为基数来减
  1. function division(a, b) { /*输入两个字符串类型大数字*/
  2.  
  3. a = a.toString();
  4.  
  5. b = b.toString();
  6.  
  7. var sign = '';
  8.  
  9. if(a.indexOf('-') >= 0 && b.indexOf('-') < 0){
  10.  
  11. sign = '-';
  12.  
  13. a = a.substr(1);
  14. }
  15. else if(a.indexOf('-') < 0 && b.indexOf('-') >= 0){
  16.  
  17. sign = '-';
  18.  
  19. b = b.substr(1);
  20. }
  21.  
  22. if(a.indexOf('-') >= 0 && b.indexOf('-') >= 0){
  23.  
  24. a = a.substr(1);
  25.  
  26. b = b.substr(1);
  27. }
  28.  
  29. if(compare(a,b) < 0){ /*绝对值a<b返回0*/
  30.  
  31. return 0;
  32. }
  33.  
  34. a = a.replace(/^0+/,'');
  35.  
  36. b = b.replace(/^0+/,'');
  37.  
  38. var divisionSub = function(x,y){
  39.  
  40. var returnRes = [0];
  41.  
  42. var xlen = x.length;
  43.  
  44. var ylen = y.length;
  45.  
  46. for(var i=0;i<xlen-ylen;i++){
  47.  
  48. if(compare(x,y + '0') >= 0){
  49.  
  50. y += "0";
  51.  
  52. returnRes.push(0);
  53. }
  54. }
  55.  
  56. while(compare(x,y) >= 0){
  57.  
  58. returnRes[0] ++;
  59.  
  60. x = subtraction(x,y);
  61. }
  62.  
  63. return {
  64. remainder : x,
  65. quotient : returnRes.join('')
  66. }
  67. }
  68.  
  69. var divisionRes = '0';
  70.  
  71. var divisionSubRes = {
  72. remainder: a,
  73. quotient: '0'
  74. }
  75.  
  76. while(compare(divisionSubRes.remainder,b) >= 0){
  77.  
  78. divisionSubRes = divisionSub(divisionSubRes.remainder,b);
  79.  
  80. divisionRes = addition(divisionRes,divisionSubRes.quotient);
  81.  
  82. }
  83.  
  84. return sign + divisionRes;
  85. }
  1. 这样一来我们就已经有了大整数的四则运算的所有函数,可以将其封装起来,就成为了我们自己的一个简单的四则运算库。
  2.  
  3. 代码详情可以查看github : https://github.com/yux357/my-code-kata/blob/master/arithmetic.js

  1.  

如果喜欢我的文章,可以扫描二维码关注我的微信公众号

  1.  

争取每天都分享一点我自己的开发和练习体验~

  1.  

Code Kata:大整数四则运算—除法 javascript实现的更多相关文章

  1. Code Kata:大整数四则运算—乘法 javascript实现

    上周练习了加减法,今天练习大整数的乘法运算. 采取的方式同样为竖式计算,每一位相乘后相加. 乘法函数: 异符号相乘时结果为负数,0乘任何数都为0 需要调用加法函数 因为输入输出的为字符串,需要去除字符 ...

  2. Code Kata:大整数比较大小&大整数四则运算---加减法 javascript实现

    大整数的四则运算已经是老生常谈的问题了.很多的库也已经包含了各种各样的解决方案. 作为练习,我们从最简单的加减法开始. 加减法的核心思路是用倒序数组来模拟一个大数,然后将两个大数的利用竖式进行运算. ...

  3. 大整数四则运算(vector与数组两种版本实现)

    每逢大整数四则运算,都会怯懦,虽是算法竞赛必会的东西,也零散的学过,简单的总结过,但不成体系的东西心里一直没底. 所以今天消耗了大量的卡路里,啃了几套模板之后终于总结成了一套自己的模板 再也不用担心大 ...

  4. 大整数四则运算------(c++ 实现 乘法没有用傅里叶变换)

    /* 优点: 1 支持负整数的运算 2 良好的输出形式 没有前导零 3 支持cin直接输入 支持cout直接输出 4 支持整数的直接赋值 big_int x=100; 缺点: 1 封装不好 基本都是友 ...

  5. C语言课程设计大整数运算

    该大整数运算系统用于对有符号的位数不超过500位的大整数进行加.减.乘.除四则运算和计算N(0<=N<=10000)的阶乘.注意事项 :    1.操作期间,进行四则运算时若大整数为正数请 ...

  6. POJ C++程序设计 编程题#1 大整数的加减乘除

    编程题#4:大整数的加减乘除 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 ...

  7. POJ 1001 解题报告 高精度大整数乘法模版

    题目是POJ1001 Exponentiation  虽然是小数的幂 最终还是转化为大整数的乘法 这道题要考虑的边界情况比较多 做这道题的时候,我分析了 网上的两个解题报告,发现都有错误,说明OJ对于 ...

  8. 自上而下,逐步揭开PHP解析大整数的面纱

    遇到的问题 最近遇到一个PHP大整数的问题,问题代码是这样的 $shopId = 17978812896666957068; var_dump($shopId); 上面的代码输出,会把$shopId转 ...

  9. Java开发笔记(二十九)大整数BigInteger

    早期的编程语言为了节约计算机的内存,给数字变量定义了各种存储规格的数值类型,比如字节型byte只占用一个字节大小,短整型short占用两个字节大小,整型int占用四个字节大小,长整型long占用八个字 ...

随机推荐

  1. Array.prototype.map()方法详解

    Array.prototype.map() 1 语法 const new_array = arr.map(callback[, thisArg]) 2 简单栗子 let arr = [1, 5, 10 ...

  2. 命令行man的帮助手册

    http://blog.csdn.net/gatieme/article/details/51656707 指定使用那种语音的手册,可以使用命令选项-M man -M /usr/share/man/z ...

  3. HDU 5265 pog loves szh II (二分查找)

    [题目链接]click here~~ [题目大意]在给定 的数组里选两个数取模p的情况下和最大 [解题思路]: 思路见官方题解吧~~ 弱弱献上代码: Problem : 5265 ( pog love ...

  4. Android解析程序包时出现问题

    Android用户下载我们wcc应用时,偶尔会出现“解析程序包出现问题”的的现象,以下是逐步排查的相关经验: 1. 首先确保这个包本身没有问题. 检测方法:其他手机采用同样的下载方式再下载一次. 解决 ...

  5. 第二天,初步slide第一版和家的照片墙

    今天基本完成任务, 1. 写了昨天的总结, 2. 完成slides的第一个完整版. 3. 家里布置了照片墙. 4. 其他的 未完成: 1. 框架搭建:Creasy没来. 领导力:为公司利益早起,任务说 ...

  6. gitlab结构分析

    1 gitlab的工作流程 2

  7. GCD总结(一)

    GCD为我们提供了三种类型的调度队列(dispatch queue),分别为串行,并行和主调度队列. 串行(Serial)     你可以创建任意个数的串行队列,每个队列依次执行添加的任务,一个队列同 ...

  8. linux下的C语言开发(静态库/动态库)

    动态链接库不是Linux独有的特性,在windows下面也存在这样的特性.一般来说,windows下面的动态连接库是以*.dll作为结尾的,而linux下面的动态连接库是以*.so结尾的.和静态链接库 ...

  9. mldonkey设置!看图(转载)

    转自:http://www.nenew.net/ubuntu-mldonkey-application.html 这里不是争论区,amule和mldonkey各有各好,看个人爱好,没有高下,都是程序员 ...

  10. bzoj 1731: [Usaco2005 dec]Layout 排队布局【差分约束】

    差分约束裸题,用了比较蠢的方法,先dfs_spfa判负环,再bfs_spfa跑最短路 注意到"奶牛排在队伍中的顺序和它们的编号是相同的",所以\( d_i-d_{i-1}>= ...