Чат Telegram
Группа ВКонтакте
Новый комментарий


Pavel.Ivatsko
function bigSum(string $x1, string $x2): string {
    $result = bcadd($x1,$x2);
    return $result;
}
ivashkevich

Ну, чёт не. Нужно написать функцию самостоятельно. Вы же просто обернули готовую в другое имя. И непонятно, для чего переменная $result. Можно было просто:

return bcadd($x1, $x2).
SBTesla
$a = '52343245623456243574657436754356754367';
$b = '79687945834597259348572398562395826735209';

function sum ($a, $b)
{
     $c = bcadd($a,$b);
     return $c;
}

$c = sum($a, $b);
echo $c;
ivashkevich

Смотри коммент выше.

virtual2018

код страшненький, но рабочий

function sumBigNumber($bigNumFirst, $bigNumSecond)
{
    $sumBigNum = "";
    $indexFirstNumber = strlen($bigNumFirst) - 1;
    $indexSecondNumber = strlen($bigNumSecond) - 1;
    $indexSum = $transferNum = 0;

    while ($indexFirstNumber >= 0 || $indexSecondNumber >= 0) {
        if ($indexFirstNumber < 0) {
            $sumTemp = (int)($bigNumSecond[$indexSecondNumber] + $transferNum);
        } elseif ($indexSecondNumber < 0) {
            $sumTemp = (int)($bigNumFirst[$indexFirstNumber] + $transferNum);
        } else {
            $sumTemp = (int)($bigNumFirst[$indexFirstNumber] + $bigNumSecond[$indexSecondNumber] + $transferNum);
        }

        if ($sumTemp >= 10) {
            $transferNum = 1;
            $sumTemp = $sumTemp - 10;
        } else {
            $transferNum = 0;
        }
        $sumBigNum[$indexSum] = $sumTemp;
        $indexFirstNumber--;
        $indexSecondNumber--;
        $indexSum++;
    }

    return strrev($sumBigNum);
}
EWA
<?php
function bigSum(string $x1, string $x2): string
{
    $arrX1 = str_split($x1);
    $arrX2 = str_split($x2);
    if (count($arrX1) >= count($arrX2)){
        $i = count($arrX1);
    }else{
        $i = count($arrX2);
    }
    $n = 0;
    $arrayResult = [];
    for($x = 0; $x < $i; $x++){
        $result = array_pop($arrX1) + array_pop($arrX2) + $n;
        $str = (string)$result;
        if($result >= 10){
            $n = 1;
        }else{
            $n = 0;
        }
        array_unshift($arrayResult, $str[$n]);
    }
    if($n == 1){
        array_unshift($arrayResult, $n);
    }
        return implode($arrayResult);
}
echo bigSum('311564432977632588977129875641230255', '2589745632159875325874103698878965421036589');
?>
Evgeniy
<?php

function bigSum(string $x1, string $x2): string
{
    if (empty($x1) || empty($x2)) {
        return $x1 . $x2;
    }

    $len1 = strlen($x1);
    $len2 = strlen($x2);
    $maxLen = max($len1, $len2);

    $carryBit = 0;
    $result = '';

    for ($i = 1; $i <= $maxLen; $i++) {
        ($i > $len1) ? ($digit1 = 0) : ($digit1 = (int)$x1[$len1 - $i]);
        ($i > $len2) ? ($digit2 = 0) : ($digit2 = (int)$x2[$len2 - $i]);
        $sum = (string)($digit1 + $digit2 + $carryBit);
        $result = $sum[strlen($sum) - 1] . $result;
        (strlen($sum) > 1) ? ($carryBit = 1) : ($carryBit = 0);
    }

    return ($carryBit > 0) ? ('1' . $result) : ($result);
}

/*---------------------------------------------*/

$a = '10000000000000000000033';
$b = '500000000098';

echo "Складываем $a и $b <br>" . 'Результат = ' . bigSum($a, $b);
Evgeniy

Оффтоп :)
Библиотека для сложения двух чисел с использованием ООП:
https://habr.com/post/172119/
:)

SIGTTD
function bigSum(string $x1, string $x2): string {
    $maxLength = strlen($x1) > strlen($x2) ? strlen($x1) : strlen($x2);
    $x1rev = strrev($x1);
    $x2rev = strrev($x2);
    $resultRev = '';
    $decimalPlus = 0;
    for ($i = 0; $i < $maxLength; $i++) {
        if ($x1rev[$i] + $x2rev[$i] + $decimalPlus > 9) {
            $resultRev .= $x1rev[$i] + $x2rev[$i] - 10 + $decimalPlus;
            $decimalPlus = 1;
        } else {
            $resultRev .= $x1rev[$i] + $x2rev[$i] + $decimalPlus;
            $decimalPlus = 0;
        }
    }
    return strrev($resultRev);
}
echo bigSum('278378473848374873847384738478347483743878', '23784923428346283472346234623746238423');
Самый понятный курс PHP
Онлайн-уроки в удобное время!
Начать бесплатно
Логические задачи с собеседований