Code Kata:大整数四则运算—除?法 javascript实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Code Kata:大整数四则运算—除?法 javascript实现相关的知识,希望对你有一定的参考价值。

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

除法函数:

  • 如果前者绝对值小于后者直接返回零
  • 做减法时,不需要一个一个减,可以以除数*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 }
这样一来我们就已经有了大整数的四则运算的所有函数,可以将其封装起来,就成为了我们自己的一个简单的四则运算库。

代码详情可以查看github : https://github.com/yux357/my-code-kata/blob/master/arithmetic.js




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


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

 




以上是关于Code Kata:大整数四则运算—除?法 javascript实现的主要内容,如果未能解决你的问题,请参考以下文章

数组乘法(大整数相乘)

高精除~~~

java做除法运算,为啥除不开时也会得到整数呢

java入门篇3 --- 基本数据类型的运算

PHP中任意大整数的算术运算

求助:C语言大整数相除