BcMath减去大数字+为差值创建while循环


BcMath Subtracting big numbers + creating a while loop for the difference

我有一个问题,如何对BCMath的数字进行四舍五入?不知怎么的,这个代码不能正常工作-因为当我删除文本时,它变成了xxx.0000。我真的需要帮助,我不知道它应该如何正常工作。

代码

    if (isset($_POST['licz'])) {
            $liczba_a='1111111111111111111';
            $liczba_b='1111111111111111100';
            echo $a = round(bcsub($liczba_a, $liczba_b)).'<br>';
            $diffcap = round($a);
            //secure 1
            $i = 0;
            $count = round($diffcap);
            $array= array();
            while ($i < $count) {
               echo 'array '.$b = bcadd($liczba_a, $i).'<br>';
               array_push($array, $b);
               ++$i;
            }
            var_dump($array);
    } else {
            echo "Wpisz liczby.";
    }
    ?>

我的输出

11 - this is the diff number
array 1111111111111111111
array 1111111111111111112
array 1111111111111111113
array 1111111111111111114
array 1111111111111111115
array 1111111111111111116
array 1111111111111111117
array 1111111111111111118
array 1111111111111111119
array 1111111111111111120
array 1111111111111111121
array(11) { [0]=> string(23) "1111111111111111111
" [1]=> string(23) "1111111111111111112
" [2]=> string(23) "1111111111111111113
" [3]=> string(23) "1111111111111111114
" [4]=> string(23) "1111111111111111115
" [5]=> string(23) "1111111111111111116
" [6]=> string(23) "1111111111111111117
" [7]=> string(23) "1111111111111111118
" [8]=> string(23) "1111111111111111119
" [9]=> string(23) "1111111111111111120
" [10]=> string(23) "1111111111111111121
" }

Assign运算符的优先级低于concatination。

echo 'array '.$b = bcadd($liczba_a, $i).'<br>';
                                       ^ it would be first operation.
                 ^ it would be second opration.

你应该加括号

echo 'array '.($b = bcadd($liczba_a, $i)).'<br>';

但最好避免双重目的的操作。

$b = bcadd($liczba_a, $i);
echo 'array '. $b .'<br>';