作家
登录

JavaScript 大数据相加的问题

作者: 来源:www.28hudong.com 2013-03-30 00:47:04 阅读 我要评论

同样是一道面试题,来自有道前端的面试。 写一个函数处理大数据的相加问题,所谓的大数据是指超出了整型,长整型之类的常规数据类型表示范围的数据。实现语言不限。 我是用js实现的,说一下我自己的思路: 1、首先这个题目最重要的环节在考虑怎么存储大数据?用什么数据类型保存呢?最简单可行的方式是String 2、确定了使用何种类型保存数据之后这个题目就明朗了。首先判断两个传入字符串的长度,取最短的len循环,两者从低位开始对应位相加,同时注意保存进位。在短的数据处理完后,将进位交给较长串的剩余部分处理。 详细实现看一下代码,完整实例见jsfiddle 复制代码 代码如下: var strAdd = function(srcA, srcB) { var i, temp, tempA, tempB, len, lenA, lenB, carry = 0; var res = [], arrA = [], arrB = [], cloneArr = []; arrA = srcA.split(''); arrB = srcB.split(''); arrA.reverse(); arrB.reverse(); lenA = arrA.length; lenB = arrB.length; len = lenA > lenB ? lenB : lenA; for (i = 0; i < len; i++) { tempA = parseInt(arrA[i], 10); tempB = parseInt(arrB[i], 10); temp = tempA + tempB + carry; if (temp > 9) { res.push(temp - 10); carry = 1; } else { res.push(temp); carry = 0; } } cloneArr = lenA > lenB ? arrA : arrB; for (; i < cloneArr.length; i++) { tempA = parseInt(cloneArr[i], 10); temp = tempA + carry; if (temp > 9) { res.push(temp - 10); carry = 1; } else { res.push(temp); carry = 0; } } return (res.reverse()).join(''); }; 以上。 PS:其实吧,这个面试题被我改编了下,原始的面试题主考官提示了用字符串保存大数据的,这个其实降低难度了~~

  推荐阅读

  js文字链接的热点提示效果代码

小提示窗口 body{ font-size:12px; } .tip{ color:red; text-decoration:none; position:relative; } .tip span {display:none;} .tip:hover {cursor:hand;} .tip:hover .popbox { displ>>>详细阅读


本文标题:JavaScript 大数据相加的问题

地址:http://www.17bianji.com/kaifa2/JS/24311.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)