HomeMenu
Jesus · Bible · HTML · CSS · JS · PHP · SVG · Applications

bcround

Description

The bcround of BCMath for PHP rounds to an arbitrary precision number.

Syntax

bcround(
    string $num,
    int $precision = 0,
    RoundingMode $mode = RoundingMode::HalfAwayFromZero
): string

Parameters

num

The value to round.

precision

The optional number of decimal digits to round to.

If negative, num is rounded to precision significant digits before the decimal point.

If positive, num is rounded to precision significant digits after the decimal point.

mode

Specifies the rounding mode.

Return

Returns a numeric string representing num rounded to the given precision.

Examples

1 · num · negative · high

<?

$num = -1.5000;

$return = bcround($num);

var_dump($return);
string(2) "-2"

2 · num · negative · low

<?

$num = -1.4999;

$return = bcround($num);

var_dump($return);
string(2) "-1"

3 · num · positive · low

<?

$num = 1.4999;

$return = bcround($num);

var_dump($return);
string(1) "1"

4 · num · positive · high

<?

$num = 1.5000;

$return = bcround($num);

var_dump($return);
string(1) "2"

5 · precision

<?

$num = 12345.67890;

for($i = -5; $i <= 5; ++$i)
{
    $precision = $i;

    $return = bcround($num, $precision);

    var_dump($return);
}
string(1) "0"
string(5) "10000"
string(5) "12000"
string(5) "12300"
string(5) "12350"
string(5) "12346"
string(7) "12345.7"
string(8) "12345.68"
string(9) "12345.679"
string(10) "12345.6789"
string(11) "12345.67890"

6 · mode

<?

$array1 =
[
    RoundingMode::HalfAwayFromZero,
    RoundingMode::HalfTowardsZero,
    RoundingMode::AwayFromZero,
    RoundingMode::TowardsZero,
    RoundingMode::NegativeInfinity,
    RoundingMode::PositiveInfinity,
    RoundingMode::HalfEven,
    RoundingMode::HalfOdd
];
$array2 =
[
    -2.5000,
    -2.4999,
    -1.5000,
    -1.4999,
    1.4999,
    1.5000,
    2.4999,
    2.5000
];

$precision = 0;

foreach($array1 as $mode)
{
    echo $mode->name . ":" . PHP_EOL;

    foreach($array2 as $num)
    {
        $return = bcround($num, $precision, $mode);

        var_dump($return);
    }

    echo PHP_EOL;
}
HalfAwayFromZero:
string(2) "-3"
string(2) "-2"
string(2) "-2"
string(2) "-1"
string(1) "1"
string(1) "2"
string(1) "2"
string(1) "3"

HalfTowardsZero:
string(2) "-2"
string(2) "-2"
string(2) "-1"
string(2) "-1"
string(1) "1"
string(1) "1"
string(1) "2"
string(1) "2"

AwayFromZero:
string(2) "-3"
string(2) "-3"
string(2) "-2"
string(2) "-2"
string(1) "2"
string(1) "2"
string(1) "3"
string(1) "3"

TowardsZero:
string(2) "-2"
string(2) "-2"
string(2) "-1"
string(2) "-1"
string(1) "1"
string(1) "1"
string(1) "2"
string(1) "2"

NegativeInfinity:
string(2) "-3"
string(2) "-3"
string(2) "-2"
string(2) "-2"
string(1) "1"
string(1) "1"
string(1) "2"
string(1) "2"

PositiveInfinity:
string(2) "-2"
string(2) "-2"
string(2) "-1"
string(2) "-1"
string(1) "2"
string(1) "2"
string(1) "3"
string(1) "3"

HalfEven:
string(2) "-2"
string(2) "-2"
string(2) "-2"
string(2) "-1"
string(1) "1"
string(1) "2"
string(1) "2"
string(1) "2"

HalfOdd:
string(2) "-3"
string(2) "-2"
string(2) "-1"
string(2) "-1"
string(1) "1"
string(1) "1"
string(1) "2"
string(1) "3"