美文网首页
js实现两个字符串类型的数字求和

js实现两个字符串类型的数字求和

作者: xinyiyake | 来源:发表于2019-10-30 17:36 被阅读0次

题目:

/*
完成一个add方法,完成两个字符串类型的数字相加,并返回这个结果。
注意:这两个数字的值可能会很大,大的会超出javascript所能计算的最大数值。
例:
*/
add("123", "321"); // "444"
add("11", "99"); // "110"
add('987429134712934876249385134781395873198472398562384958739845234859234758913759182357398457398474598237459823745928347538',
              '835743829547328954732895474893754893753281957319857432958432548937859483265893274891378593187431583942678439217431924789');// '1823172964260263830982280609675150766951754355882242391698277783797094242179652457248777050585906182180138262963360272327'

我的思路

  1. 把两个字符串分割成数组,并且数组的每位元素代表一位
  2. 比较两个数值谁的位数最多,说明这个数值比较大
  3. 循环,做类似于加法的操作,逢十进一
function add(a, b) {
  var number1,number2,MAX_LENGTH,result=[];
 //比较两个数值谁的位数多,循环时用
  if(a.length>b.length){
    number1 = a.split('').reverse()
    number2 = b.split('').reverse()
    MAX_LENGTH = a.length
  }else{
    number1 = b.split('').reverse()
    number2 = a.split('').reverse()
    MAX_LENGTH = b.length
  }
  // 做加法,因为前面做了数组翻转,所以这个相当于从个位开始计算
  for(var i = 0;i<MAX_LENGTH;i++){
    var sum
    if(number2[i]){
      // 两个值在当前位都有值
      sum = Number(number1[i])+Number(number2[i])
    }else{
      // 较小的值在当前位没有值
      sum = Number(number1[i])
    }
    if(result[i]){
      // 上个位数计算中逢十进一的判断
      sum +=1
    }
    result[i] = String(sum%10)
    if(sum>=10){
      // 逢十进一
      result[i+1] = '1'
    }
  }
  
 // 最后结果处理
  return result.reverse().join('')
}

厉害的解法

function add (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
   // 判端下一位计算时是否需要+1
    c = c > 9
  }
  return res
}

相关文章

  • js基本

    js的数据类型 数字类型 字符串 布尔类型

  • js实现两个字符串类型的数字求和

    题目: 我的思路 把两个字符串分割成数组,并且数组的每位元素代表一位 比较两个数值谁的位数最多,说明这个数值比较大...

  • JavaScript (第一篇)

    JS 打印消息 JS 数据类型 简单数据类型: Number:数字类型String:字符串类型Boolean:...

  • js关于字符串和数字的转换

    js字符串转换成数字 js 字符串转换数字方法主要有三种:转换函数、强制类型转换、利用JS变量弱类型特点进行转换 ...

  • js ..2

    数据类型 js的数据类型: 数字类型(number) 字符串(strin...

  • 2018-05-25

    数据类型 js的数据类型: 数字类型(number) 字符串(strin...

  • JavaScript 字符串与数字的相互转换

    js字符串转换成数字 js 字符串转换数字方法主要有三种:转换函数、强制类型转换、利用JS变量弱类型特点进行转换1...

  • js--类型转换

    js数据类型Number:数字类型String:字符串类型Boolean:布尔类型Null:空Undefined:...

  • .5

    数据类型 js的数据类型: 数字类型(number) 字符串(string) 布尔(b...

  • js

    js的数据类型 : 数字类型(number) 字符串(string) 布尔(boolean) null (空) ...

网友评论

      本文标题:js实现两个字符串类型的数字求和

      本文链接:https://www.haomeiwen.com/subject/vuqavctx.html