PHP 计算两个特别大的整数

很多面试的时候笔试题会遇到两个特别大的整数相加的问题,而有些算法没有考虑到进位的问题,所以我闲暇时间写了个函数

function getIntAdd($a,$b){
   $c = '';
   $bCount = strlen($b);
   $aCount = strlen($a);
   $count = max($bCount,$aCount);
   $aDiff = $count - $aCount;
   $bDiff = $count - $bCount;
   for($i = $count - 1;$i >= 0;$i--){
      $aVal = $count - $i <= $aCount ? intval($a[$i - $aDiff]) : 0;
      $bVal = $count - $i <= $bCount ? intval($b[$i - $bDiff]) : 0;
      $v = $aVal + $bVal;
      if(strlen($c) > 0 && strlen($c) >= $count - $i){
         $c = ($v + intval($c[0])).substr($c,1,strlen($c) - 1);
      }else{
         $c = $v.$c.'';
      }
   }
   return $c;
}
$a = '23490234328490289048902384908392849238';
$b = '234320498324982390489328498230984982399290384902384';
$c = getIntAdd($a,$b);
print_r($c);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值