有一定的编程经验的人都知道,当我们对数据操作的时候,若数据过大,计算机将这个大数从十进制的转为二进制的,是没有那个类型的放的了的,因此,我们经常将一个大数转化为字符串来操作。接下来我将演示大整数的加法、乘法、除法操作。

附:不考虑负数

1、大整数加法

思路:我们将两个数进行逆序转换,然后按位进行相加,将相加的结果进行与10相除,商为进位,余数为当前位要保留的数。

//大整数加法

function big_add(a,b){

var min_str=a.length

var max_str=a.length>=b.length?a.split("").reverse():b.split("").reverse();

var quotient=0,remainder=0;

var resutl=[];

var temp=0;

for(var i=0;i

temp=parseInt(min_str[i])+parseInt(max_str[i])+quotient;

quotient=parseInt(temp/10);//进位

remainder=temp%10;//余数

resutl.push(remainder);

}

for(i;i

temp=parseInt(max_str[i])+quotient;

quotient=temp/10;//进位

remainder=temp%10;//余数

resutl.push(remainder);

if(temp<10&&i

return max_str.slice(i+1).reverse().join("")+resutl.slice().reverse().join("");

}

}

return resutl.reverse().join("");

}

2、大整数乘法

//大数乘法

function multi(a,b){

var str1,str2,len1,len2,maxlen,result = [];

str1 = a.split("").reverse();

str2 = b.split("").reverse();

len1 = str1.length;

len2 = str2.length;

//因为要在下一步做累加,如果不初始化为0,result[]中的值会变为NaN

//因为未初始化的数组中的值为undefined

for(var i = 0;i < len1;i++)

for(var j = 0;j < len2;j++)

result[i + j] = 0;

for(var i = 0;i < len1;i++)

for(var j = 0;j < len2;j++)

//根据乘法的手动计算方式,在上下相同位上会有相加

result[i + j] += parseInt(str1[i]) * parseInt(str2[j]);

var n = result.length;

for(var k = 0;k < n-1;k++)

{

var temp = result[k];

if(temp >= 10)

{

result[k] = temp % 10;

//JS中的"/"不是除法取整,会取得小数,所以要用Math.floor()

result[k + 1] += parseInt(temp / 10);

}

}

return result.reverse().join("");

}

3、大整数除法

//利用"模n取余法"模拟手动除法

//a/b a>b

function big_div(a,b){

var alen=a.length,blen=b.length;

var quotient=0,remainder=0;

var result=[],temp=0 ;

for(var i=0;i

temp=remainder*10+parseInt(a[i]);

if(temp

remainder=temp;

result.push(0);

}else{

quotient=parseInt(temp/b);

remainder=temp%b;

result.push(quotient);

}

}

return [result.join("").replace(/\b(0+)/gi,""),remainder];//结果返回[商,余数]

}

javascript乘法和加法_js 大整数加法、乘法、除法相关推荐

  1. Bailian2981 大整数加法【大数】(POJ NOI0106-10)

    问题链接:POJ NOI0106-10 大整数加法. 大整数加法 描述 求两个不超过200位的非负整数的和. 输入 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0. 输出 一行,即相加 ...

  2. 剑指offer第12题打印从1到n位数以及大整数加法乘法

    字符和数字加减就是字符的ASCII码和数字直接加减. 方法一: 1)在字符串操作中给一个整形数字加(字符0)就是把它转化为字符,当然给一个字符减去(字符0)就可以把它转化为数字了:如果确实是最后一位字 ...

  3. 求一个整数的权重 c语言,Code Kata:大整数四则运算—乘法 javascript实现

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

  4. 1168:大整数加法--2022.01.22 AC

    /* 1168:大整数加法--2022.01.22 AC http://ybt.ssoier.cn:8088/problem_show.php?pid=1168c++中 cin.cin.get().c ...

  5. 信息学奥赛一本通 1168:大整数加法 | OpenJudge NOI 1.6 10:大整数加法

    [题目链接] ybt 1168:大整数加法 OpenJudge NOI 1.6 10:大整数加法 [题目考点] 1. 高精度 考察:高精加高精 高精度计算讲解 [解题思路] 注意:输入可能有多余的前导 ...

  6. 大整数加法基本思路和代码(C++实现)

    大整数加法基本思路和代码(C++实现) 前言 分析 编程 前言 如果给出两个很大很大的整数,这两个数大到long类型也装不下,比如100位整数,如何求它们的和呢? Java中有无敌的BigIntege ...

  7. 信息学奥赛一本通:1168:大整数加法

    1168:大整数加法 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 76804     通过数: 25726 [题目描述] 求两个不超过200位的非负整数的和. ...

  8. 大整数加法——求两个不超过200位的非负整数的和

    10:大整数加法 描述 求两个不超过200位的非负整数的和. 输入 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0. 输出 一行,即相加后的结果.结果里不能有多余的前导0,即如果结果是 ...

  9. 1.6编程基础之一维数组 10大整数加法

    1.6编程基础之一维数组 10大整数加法 OpenJudge - 10:大整数加法 1168:大整数加法 信息学奥赛一本通(C++版)在线评测系统 P1601 A+B Problem(高精) A+B ...

最新文章

  1. 学JS的心路历程 -非同步执行
  2. 想成为全栈工程师,要做到哪几点?
  3. 条件、循环、函数定义练习
  4. director.js实现前端路由
  5. mysql_close6_关于mysql_close()函数的10篇文章推荐
  6. 9203复习小结 消息框 新窗体
  7. IIS中启用ASP并连接Access数据库的解决办法
  8. linux安装vnc
  9. 一文道尽Flutter最新最全的学习资料
  10. 如何设置内网打印机端口网络穿透到公网
  11. 判断两个矩形是否相交
  12. selenium+python实现登QQ邮箱并发送邮件自动化
  13. Jedis scan及其count的值
  14. Neoverse Roadmap
  15. RIP实验(详细步骤)
  16. 秒杀抢购活动性能测试记录
  17. 同型号服务器更改硬盘,服务器更换硬盘需要怎么做
  18. C/C++编程新手入门基础系列:俄罗斯方块小游戏制作源代码
  19. 法国大数据分析服务初创公司 Dataiku 获1400 万美元 A 轮融资
  20. android 仿QQ五毛特效之查看红包领取详情界面

热门文章

  1. 前端学习(1737):前端调试值测试窗口的切换
  2. 前端学习(1662):前端系列实战课程之div跟随鼠标移动
  3. 前端学习(1524):ES6模块导入和导出
  4. 前端学习(685):循环的目的
  5. 前端学习(360):svn操作前期连接工作
  6. java学习(173):class反射编程方法
  7. nginx html解析插件,nginx配置信息的解析流程
  8. 怎样下载安装python_Windows系统上如何安装Python和pip
  9. Delphi XE10编写的《开放式公路收费系统》
  10. 欧拉函数 cojs 2181. 打表