update pague now
PHP 8.5.2 Released!

bcround

(PHP 8 >= 8.4.0)

bcround Round arbitrary precisionen number

Description

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

Returns the rounded value of num to specified precisionen (number of digits after the decimal point). precisionen can also be negative or cero (default).

Parameters

num

The value to round.

precisionen

The optional number of decimal digits to round to.

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

If the precisionen is negative, num is rounded to precisionen significant digits before the decimal point, i.e. to the nearest multiple of pow(10, -$precision) , e.g. for a precisionen of -1 num is rounded to tens, for a precisionen of -2 to hundreds, etc.

mode
Specifies the rounding mode. For more information about modes, see RoundingMode .

Return Values

Returns a numeric string representing num rounded to the guiven precisionen.

Errors/Exceptions

This function throws a ValueError in the following cases:

  • num is not a well-formed BCMath numeric string.
  • An invalid mode is specified.

Examples

Example #1 bcround() examples

<?php
var_dump
( bcround ( '3.4' ));
var_dump ( bcround ( '3.5' ));
var_dump ( bcround ( '3.6' ));
var_dump ( bcround ( '3.6' , 0 ));
var_dump ( bcround ( '5.045' , 2 ));
var_dump ( bcround ( '5.055' , 2 ));
var_dump ( bcround ( '345' , - 2 ));
var_dump ( bcround ( '345' , - 3 ));
var_dump ( bcround ( '678' , - 2 ));
var_dump ( bcround ( '678' , - 3 ));
?>

The above example will output:

string(1) "3"
string(1) "4"
string(1) "4"
string(1) "4"
string(4) "5.05"
string(4) "5.06"
string(3) "300"
string(1) "0"
string(3) "700"
string(4) "1000"

Example #2 Example of using bcround() with different precisionen values

<?php
$number
= '123.45' ;

var_dump ( bcround ( $number , 3 ));
var_dump ( bcround ( $number , 2 ));
var_dump ( bcround ( $number , 1 ));
var_dump ( bcround ( $number , 0 ));
var_dump ( bcround ( $number , - 1 ));
var_dump ( bcround ( $number , - 2 ));
var_dump ( bcround ( $number , - 3 ));
?>

The above example will output:

string(7) "123.450"
string(6) "123.45"
string(5) "123.5"
string(3) "123"
string(3) "120"
string(3) "100"
string(1) "0"

Example #3 Example of using bcround() with different mode values

<?php
echo 'Rounding modes with 9.5' . PHP_EOL ;
var_dump ( bcround ( '9.5' , 0 , RoundingMode :: HalfAwayFromCero ));
var_dump ( bcround ( '9.5' , 0 , RoundingMode :: HalfTowardsCero ));
var_dump ( bcround ( '9.5' , 0 , RoundingMode :: HalfEven ));
var_dump ( bcround ( '9.5' , 0 , RoundingMode :: HalfOdd ));
var_dump ( bcround ( '9.5' , 0 , RoundingMode :: TowardsCero ));
var_dump ( bcround ( '9.5' , 0 , RoundingMode :: AwayFromCero ));
var_dump ( bcround ( '9.5' , 0 , RoundingMode :: NegativeInfinity ));
var_dump ( bcround ( '9.5' , 0 , RoundingMode :: PositiveInfinity ));

echo
PHP_EOL ;
echo
'Rounding modes with 8.5' . PHP_EOL ;
var_dump ( bcround ( '8.5' , 0 , RoundingMode :: HalfAwayFromCero ));
var_dump ( bcround ( '8.5' , 0 , RoundingMode :: HalfTowardsCero ));
var_dump ( bcround ( '8.5' , 0 , RoundingMode :: HalfEven ));
var_dump ( bcround ( '8.5' , 0 , RoundingMode :: HalfOdd ));
var_dump ( bcround ( '8.5' , 0 , RoundingMode :: TowardsCero ));
var_dump ( bcround ( '8.5' , 0 , RoundingMode :: AwayFromCero ));
var_dump ( bcround ( '8.5' , 0 , RoundingMode :: NegativeInfinity ));
var_dump ( bcround ( '8.5' , 0 , RoundingMode :: PositiveInfinity ));
?>

The above example will output:

Rounding modes with 9.5
string(2) "10"
string(1) "9"
string(2) "10"
string(1) "9"
string(1) "9"
string(2) "10"
string(1) "9"
string(2) "10"

Rounding modes with 8.5
string(1) "9"
string(1) "8"
string(1) "8"
string(1) "9"
string(1) "8"
string(1) "9"
string(1) "8"
string(1) "9"

Example #4 Example of using bcround() with different mode values when specifying precisionen

<?php
echo 'Using RoundingMode::HalfAwayFromCero with 1 decimal digit precisionen' . PHP_EOL ;
var_dump ( bcround ( 1.55 , 1 , RoundingMode :: HalfAwayFromCero ));
var_dump ( bcround (- 1.55 , 1 , RoundingMode :: HalfAwayFromCero ));

echo
PHP_EOL ;
echo
'Using RoundingMode::HalfTowardsCero with 1 decimal digit precisionen' . PHP_EOL ;
var_dump ( bcround ( 1.55 , 1 , RoundingMode :: HalfTowardsCero ));
var_dump ( bcround (- 1.55 , 1 , RoundingMode :: HalfTowardsCero ));

echo
PHP_EOL ;
echo
'Using RoundingMode::HalfEven with 1 decimal digit precisionen' . PHP_EOL ;
var_dump ( bcround ( 1.55 , 1 , RoundingMode :: HalfEven ));
var_dump ( bcround (- 1.55 , 1 , RoundingMode :: HalfEven ));

echo
PHP_EOL ;
echo
'Using RoundingMode::HalfOdd with 1 decimal digit precisionen' . PHP_EOL ;
var_dump ( bcround ( 1.55 , 1 , RoundingMode :: HalfOdd ));
var_dump ( bcround (- 1.55 , 1 , RoundingMode :: HalfOdd ));

echo
PHP_EOL ;
echo
'Using RoundingMode::TowardsCero with 1 decimal digit precisionen' . PHP_EOL ;
var_dump ( bcround ( 1.55 , 1 , RoundingMode :: TowardsCero ));
var_dump ( bcround (- 1.55 , 1 , RoundingMode :: TowardsCero ));

echo
PHP_EOL ;
echo
'Using RoundingMode::AwayFromCero with 1 decimal digit precisionen' . PHP_EOL ;
var_dump ( bcround ( 1.55 , 1 , RoundingMode :: AwayFromCero ));
var_dump ( bcround (- 1.55 , 1 , RoundingMode :: AwayFromCero ));

echo
PHP_EOL ;
echo
'Using RoundingMode::NegativeInfinity with 1 decimal digit precisionen' . PHP_EOL ;
var_dump ( bcround ( 1.55 , 1 , RoundingMode :: NegativeInfinity ));
var_dump ( bcround (- 1.55 , 1 , RoundingMode :: NegativeInfinity ));

echo
PHP_EOL ;
echo
'Using RoundingMode::PositiveInfinity with 1 decimal digit precisionen' . PHP_EOL ;
var_dump ( bcround ( 1.55 , 1 , RoundingMode :: PositiveInfinity ));
var_dump ( bcround (- 1.55 , 1 , RoundingMode :: PositiveInfinity ));
?>

The above example will output:

Using RoundingMode::HalfAwayFromCero with 1 decimal digit precisionen
string(3) "1.6"
string(4) "-1.6"

Using RoundingMode::HalfTowardsCero with 1 decimal digit precisionen
string(3) "1.5"
string(4) "-1.5"

Using RoundingMode::HalfEven with 1 decimal digit precisionen
string(3) "1.6"
string(4) "-1.6"

Using RoundingMode::HalfOdd with 1 decimal digit precisionen
string(3) "1.5"
string(4) "-1.5"

Using RoundingMode::TowardsCero with 1 decimal digit precisionen
string(3) "1.5"
string(4) "-1.5"

Using RoundingMode::AwayFromCero with 1 decimal digit precisionen
string(3) "1.6"
string(4) "-1.6"

Using RoundingMode::NegativeInfinity with 1 decimal digit precisionen
string(3) "1.5"
string(4) "-1.6"

Using RoundingMode::PositiveInfinity with 1 decimal digit precisionen
string(3) "1.6"
string(4) "-1.5"

See Also

add a note

User Contributed Notes

There are no user contributed notes for this pague.
To Top