Javascript实现大整数加法
记得之前面试还被问到过用两个字符串实现两个大整数相加,当时还特别好奇好好的整数相加,为什么要用字符串去执行。哈哈,感觉当时自己还是很无知的,面试官肯定特别的无奈。今天在刷算法的时候,无意中看到了为什么要用两个字符串来实现大整数相加。所以,整理了一下。
Why?若两个整数很大的时候,直接用变量保存数字,则会造成溢出。这时候最常用也最容易的方法就是用字符串或者数组表示大数。
例如:输入‘189’,‘321’,返回‘510’。
这样在进行两个任意大的整数相加的时候,既不会溢出,也不会损失精度。
代码实现如下:(该解决办法是其他人写的,本人只是做了整理)
function sumStrings(a,b){var res='', c=0;a = a.split('');b = b.split('');while (a.length || b.length || c){c += ~~a.pop() + ~~b.pop();res = c % 10 + res;c = c>9;}return res.replace(/^0+/,'');
}
var a = '87349238473285973856723867325';
var b = '000034324382582347583275834758437853843853445';
console.log(sumStrings(a,b));
代码解析:
1. 使用split方法,将字符串转换为数组
2. 通过判断a,b,c的长度,决定是否还需要就行对应的位进行相加
3. 使用~~a.pop()的目的:保证若b的长度大于a的长度,则此时a.pop()=undefined,~~undefined=0
4. 将两个位置上的数进行相加,若大于9,则需要进位,即,将c的值存为true,这样当进行相加时,true会进行变量提升为1
5.输出最后结果的时候,由于前面可能存在0,所以使用字符串的replace方法将前面的0去掉。
Javascript实现大整数加法相关推荐
- javascript乘法和加法_js 大整数加法、乘法、除法
有一定的编程经验的人都知道,当我们对数据操作的时候,若数据过大,计算机将这个大数从十进制的转为二进制的,是没有那个类型的放的了的,因此,我们经常将一个大数转化为字符串来操作.接下来我将演示大整数的加法 ...
- 剑指offer第12题打印从1到n位数以及大整数加法乘法
字符和数字加减就是字符的ASCII码和数字直接加减. 方法一: 1)在字符串操作中给一个整形数字加(字符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. 高精度 考察:高精加高精 高精度计算讲解 [解题思路] 注意:输入可能有多余的前导 ...
- Bailian2981 大整数加法【大数】(POJ NOI0106-10)
问题链接:POJ NOI0106-10 大整数加法. 大整数加法 描述 求两个不超过200位的非负整数的和. 输入 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0. 输出 一行,即相加 ...
- 大整数加法基本思路和代码(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 ...
最新文章
- 字节最新文本生成图像AI,训练集里居然没有一张带文字描述的图片?!
- Tornado学习笔记(四)
- 性能媲美BERT却只有其1/10参数量? | 近期最火模型ELECTRA解析
- boost::mpl::not_equal_to相关的测试程序
- BOMHEAD display issue
- 子类继承父类后调用virtual函数问题(base.函数名)
- ubuntu与win10互换硬盘
- Unity3d地形刷入自定义树木
- 域名解析与邮件服务器收发问题
- Podfile使用说明
- java 多个引用指向同一个对象(含案例图解)
- 电大计算机网考视频,2016年12月电大计算机网考多媒体技术复习资料 整理版.doc...
- 软件一定存在修改的余地——《大话Java性能优化》
- 嵌入式岗位Makefile常见面试题(1)
- 用计算机怎么弹学猫叫,抖音我们一起学猫叫计算器谱分享
- HTML5实现中国象棋游戏
- 【i春秋综合渗透训练】我很简单,请不要欺负我
- OpenCV人脸识别之Eigenface算法(PCA特征脸方法)
- 一张图看懂梯度、散度、旋度、Jacobian、Hessian和Laplacian
- django 热启动_uwsgi 热部署 热启动 热更新
热门文章
- OpenWRT配置 -- 修改用户名、密码以及网页用户名的修改
- 兆比特每秒和兆字节每秒_网速中的“KB”“MB”“s”等字母都是啥意思,读啥,比如兆这样?...
- 【回顾】对话巨杉数据库核心研发团队:分布式数据库自研之路
- 20篇原创 5w+字,结束了这个5月
- Lecture 13-1
- Springboot使用oracle数据连接出现的表或视图不存在问题
- uniapp nvue 软键盘
- XDOJ1145--组合数学四之Carnival Phantasm
- 教育直播系统中不可或缺的功能部件:电子白板
- 压缩包批量处理工具中文免费版1.6