javascript乘法和加法_js 大整数加法、乘法、除法
有一定的编程经验的人都知道,当我们对数据操作的时候,若数据过大,计算机将这个大数从十进制的转为二进制的,是没有那个类型的放的了的,因此,我们经常将一个大数转化为字符串来操作。接下来我将演示大整数的加法、乘法、除法操作。
附:不考虑负数
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 大整数加法、乘法、除法相关推荐
- Bailian2981 大整数加法【大数】(POJ NOI0106-10)
问题链接:POJ NOI0106-10 大整数加法. 大整数加法 描述 求两个不超过200位的非负整数的和. 输入 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0. 输出 一行,即相加 ...
- 剑指offer第12题打印从1到n位数以及大整数加法乘法
字符和数字加减就是字符的ASCII码和数字直接加减. 方法一: 1)在字符串操作中给一个整形数字加(字符0)就是把它转化为字符,当然给一个字符减去(字符0)就可以把它转化为数字了:如果确实是最后一位字 ...
- 求一个整数的权重 c语言,Code Kata:大整数四则运算—乘法 javascript实现
上周练习了加减法,今天练习大整数的乘法运算. 采取的方式同样为竖式计算,每一位相乘后相加. 乘法函数: 异符号相乘时结果为负数,0乘任何数都为0 需要调用加法函数 因为输入输出的为字符串,需要去除字符 ...
- 1168:大整数加法--2022.01.22 AC
/* 1168:大整数加法--2022.01.22 AC http://ybt.ssoier.cn:8088/problem_show.php?pid=1168c++中 cin.cin.get().c ...
- 信息学奥赛一本通 1168:大整数加法 | OpenJudge NOI 1.6 10:大整数加法
[题目链接] ybt 1168:大整数加法 OpenJudge NOI 1.6 10:大整数加法 [题目考点] 1. 高精度 考察:高精加高精 高精度计算讲解 [解题思路] 注意:输入可能有多余的前导 ...
- 大整数加法基本思路和代码(C++实现)
大整数加法基本思路和代码(C++实现) 前言 分析 编程 前言 如果给出两个很大很大的整数,这两个数大到long类型也装不下,比如100位整数,如何求它们的和呢? Java中有无敌的BigIntege ...
- 信息学奥赛一本通:1168:大整数加法
1168:大整数加法 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 76804 通过数: 25726 [题目描述] 求两个不超过200位的非负整数的和. ...
- 大整数加法——求两个不超过200位的非负整数的和
10:大整数加法 描述 求两个不超过200位的非负整数的和. 输入 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0. 输出 一行,即相加后的结果.结果里不能有多余的前导0,即如果结果是 ...
- 1.6编程基础之一维数组 10大整数加法
1.6编程基础之一维数组 10大整数加法 OpenJudge - 10:大整数加法 1168:大整数加法 信息学奥赛一本通(C++版)在线评测系统 P1601 A+B Problem(高精) A+B ...
最新文章
- 学JS的心路历程 -非同步执行
- 想成为全栈工程师,要做到哪几点?
- 条件、循环、函数定义练习
- director.js实现前端路由
- mysql_close6_关于mysql_close()函数的10篇文章推荐
- 9203复习小结 消息框 新窗体
- IIS中启用ASP并连接Access数据库的解决办法
- linux安装vnc
- 一文道尽Flutter最新最全的学习资料
- 如何设置内网打印机端口网络穿透到公网
- 判断两个矩形是否相交
- selenium+python实现登QQ邮箱并发送邮件自动化
- Jedis scan及其count的值
- Neoverse Roadmap
- RIP实验(详细步骤)
- 秒杀抢购活动性能测试记录
- 同型号服务器更改硬盘,服务器更换硬盘需要怎么做
- C/C++编程新手入门基础系列:俄罗斯方块小游戏制作源代码
- 法国大数据分析服务初创公司 Dataiku 获1400 万美元 A 轮融资
- android 仿QQ五毛特效之查看红包领取详情界面