JavaScript中多位数相加处理方法
来源:互联网 发布:mac安装战网失败 编辑:程序博客网 时间:2024/05/24 06:18
多位数相加 ##1 我的解决方案
1.本来想自己写的,不过在网上找了一篇,跟自己写的差不多,就拿来用了;
2.第二种方法,比较的巧妙,进位用了true。在运行的过程中true会当做1来使用。
3.基本的解法就是,单独对每个数进行相加,然后用字符串保存,最后在拼接;
4.自己再写个多个多位数相加
function sumMultString(arg,arg1,arg2,……){ if(arguments.length>=2){ for(var i=0;i<arguments.length;i++){ arguments[i+1] = arguments[i+1]==undefined?arguments[i]:sumStrings(arguments[i],arguments[i+1]); } return arguments[i]; }}
function sumStrings(a,b) { var result = [], count = 0; if(a.length < b.length) b=[a, a=b][0]; b=Array(a.length-b.length+1).join('0')+b; var arrA = a.split(''); var arrB = b.split(''); for(var j=0; j<a.length; j++) { var temp = (Number(arrA.pop()) + Number(arrB.pop())) +count; temp>=10?[temp,count]=[temp-10,1]:count=0; result.push(temp); } result.push(count); return result.reverse().join('').replace(/^0+/,'');}
实现分两步:
1 为输入中较小的一个数前端补0,使得两个数一样长。在那之前为了确定给哪个数补0首先进行了一次比较。
2 将两个数的最后一位依次pop出,进行相加,并存储到result数组中。如果相加的结果大于10,取个位数部分,并使得进位符号count+1。简单来说就像小学时学加法那样,按部就班就对了。
最后得到result数组,还不是我们要的结果,我们需要对它反转,然后转换成字符串,还有去除最前面的0.
2 其他人的解决方案
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+/,'');}
一看之下简洁了不止一点点……
改进的地方在于:
没有上面提到的第一步,不用补0,不用判断哪个数大,如此一来清楚了不少。
没有使用count变量代表进位,直接将相加结果和进位变量记录在了一个变量c里,
使用 ~~a 而不是Number(a)来进行格式转换。(~表示取反操作)
0 0
- JavaScript中多位数相加处理方法
- 汇编 多位数相加
- javascript中补齐位数的方法
- JavaScript中字符串相加性能
- 固定位数相加,位数不变
- QTP中计算器任意位数相加并判断结果
- 多位数处理
- 多位数的处理
- javascript 时间日期处理相加、减操作方法
- 计算机N位数相加
- 36位数相加
- 无限位数的相加
- 三天的努力,只弄懂了一个多位数相加
- JavaScript 指定小数位数 toFixed() 方法
- javascript js保留小数位数的方法
- JavaScript取各个位数的方法
- JavaScript中对空格的处理方法
- java中Double数据相加的处理
- Java虚拟机学习之类初始化
- Linux USB 驱动开发实例(一) —— USB摄像头驱动实现源码分析
- JDBC学习笔记(七):返回自动主键
- super,this的区别和使用
- 输出以二叉树表示的算术表达式
- JavaScript中多位数相加处理方法
- 对于软件开发的体会
- 第一次面试的心得体会
- linux :make: gcc: Command not found
- http-equiv="X-UA-Compatible" 设置IE浏览器兼容模式
- 网络基本概念之TCP, UDP, 单播(Unicast), 多播(组播)(Multicast)
- 求赋权图中一个结点到所有结点的最短路径的长度
- 自动生成格雷码
- Java内存分配