如何使用carry获得两个字符串数的求和?

时间:2017-11-26 06:29:41

标签: php

如何使用carry获得两个字符串数的求和?

例如:

$a='134526897556';
$b='251452365655';

我需要这个ans而不使用常规添加($ a + $ b)。我需要这个像第一个(6 + 5)= 11携带1秒(5 + 5)= 10携带它将是11然后携带1 ..连续。

2 个答案:

答案 0 :(得分:1)

我希望你在寻找这个。尝试使用以下代码从反向中提取单个字符并求和,然后再反转并显示它。

$a='5465574541345268975564654';
$b='2514523656557987';
echo "Normal sum : ".($a +$b);
echo "<br>";
$main_loop = strlen($a);
if(strlen($a) < strlen($b)){
    $main_loop = strlen($b);
    $a = str_pad($a,strlen($b),"0",STR_PAD_LEFT);
}
else
{
    $b = str_pad($b,strlen($a),"0",STR_PAD_LEFT);
}
$carry = 0;
$str = "";
$new_sum = "";
for($i = $main_loop-1;$i>=0;$i--)
{

    $char_a = isset($a[$i])?$a[$i]:0;
    $char_b = isset($b[$i])?$b[$i]:0;
    $sum_char =(string)($char_a + $char_b + $carry);
    $carry = 0;
    $str = (string)$sum_char[0];

    if(strlen($sum_char) > 1)
    {
        $carry = $sum_char[0];
        $str = $sum_char[1];
    }
    $new_sum .= $str;
}
$new_sum = strrev($new_sum);
echo $new_sum;

DEMO

答案 1 :(得分:0)

这是直接的数学;

添加两个变量:

$a + $b;