超大整数使用普通的加法肯定会出现溢出的情况
思路分析
将超大整数逐个拆分位单个字符,按位相加。
function sumStr($str1,$str2) { $c1 = strlen($str1)-1; $c2 = strlen($str2)-1; $i = $c1 > $c2 ? $c1 : $c2; $str = ''; $surplus = 0; for (; $i>=0; $i--,$c1--,$c2--){ $sum = 0; if($c1 >= 0 && $c2 >= 0){ $sum = $str1[$c1] + $str2[$c2] + $surplus; }elseif($c1 < 0){ $sum = $str2[$c2] + $surplus; }elseif($c2 < 0){ $sum = $str1[$c1] + $surplus; } if($sum > 9){ $str[$i] = $sum - 10; $surplus = 1; }else{ $str[$i] = $sum; $surplus = 0; } if(!$i && $surplus){ $str = $surplus.$str; } } return $str; } $s1 = '897685675463468768967'; $s2 = '42423476898765356'; echo sumStr($s1,$s2);
输出结果:897728098940367534323
登录后可发表评论
09月10日 11:01
09月10日 11:01