今儿个igeek手册与大家分享的是:如何计算超出精度数字的加减运算,希望大家看完能有所收获哦~
使用程序计算如下的结果:
63298532574392574384 + 1 = ?
一开始看到这个问题我是没有思路的,今天和哥们讨论算法的时候想到了一个思路,但是后来想想,还是有问题的。
字符串处理方式
直接处理肯定是不行了,js不能存这么长的数字,如果必须存起来的话,回想js的基本类型也只有字符串了。这样的话就是把number类型转化成字符串类型使用 toString() 方法,然后把字符串分割成两部分,然后用后面的一段转化成number类型去加1,最后再转换成字符串和第一段自负串链接起来。虽然说能解决这个问题,但是存在几个问题:
1、在何处截取字符串?
2、如果截取字符串的地方存在进位怎么办?
这都是有可能存在的,显然不能推广使用。
转化成数组处理
我相信你看到标题就应该能想到,基于第一段的处理方式把字符串截成两节,如果是很长呢?这样截取显然不行,那只能回到最初的,把字符串的每个字母都截取存放在一个数组中。使用最后一个数字去加一但是这里要考虑到进位操作。直接上代码:
var arr = num.split(''); function calculate(arr){ var last;
if (arr.length == 0) {
last = 0; }else{
last = arr.pop(); }if (last == 9) {
last = 0; arr = calculate(arr); }else{
last = last - 0 + 1; //转化成数字 } arr.push(last);
return arr; }
今天igeek手册的分享就到这里啦,这里是igeekbar,我是iGeekBar的极客杀手~大家有啥问题,意见!欢迎留言勾搭我哦~~