大整数相加方法
在计算机中遇到大整数相加方法
<?php
/**
* 大整数加法的php实现
*/
function bigDataAdd($a, $b) {
$m = strlen($a);
$n = strlen($b);
$num = $m > $n ? $m : $n; //取最长数进行循环相加和进位
$result = ''; //结果
$flag = 0; //进位标志
while ($num--) {
$t1 = 0; //用来存储当前位加数
$t2 = 0; //用来存储当前位被加数
if ($m > 0) {
$t1 = $a[--$m];
}
if ($n > 0) {
$t2 = $b[--$n];
}
$t = $t1 + $t2 + $flag; //当前位加法运算考虑上一轮的进位标志
$flag = intval($t / 10); //本轮是否进位
$result = ($t % 10) . $result; //向高位添加结果
}
//最高位加完发现还有进位标志,需要再向最高位+1
if ($flag) {
$result = $flag . $result;
}
return $result;
}
$a = '999999999999999999999911111111199999999999999';
$b = '1';
$result = bigDataAdd($a,$b);
var_dump($result);exit;

勿忘初心,方得始终。
愿茫茫人海,觅得贤妻,此生足矣!


浙公网安备 33010602011771号