Simple round utility for PHP as equivalent for \round() function. Provides interface and default, safe, unit-tested implementation for rounding:, (*1)
-
half up (half towards positive infinity)
-
half down (half towards negative infinity)
- half even
- half odd
-
half away from zero (half towards infinity)
-
half towards zero (half away from infinity)
-
up (towards positive infinity)
-
down (towards negative infinity)
-
away from zero (towards infinity)
-
towards zero (away from infinity)
Unlike round(), where PHP_ROUND_HALF_UP rounding mode means rounding half away from zero and PHP_ROUND_HALF_DOWN means rounding half towards zero, Rounder provides correct implementation of these rounding modes., (*2)
Supports PHP >= 5.3 and HHVM., (*3)
How to use?
- Run
composer require "pamil/rounder:~2.0"
- Play with it!
use Pamil\Rounder\Rounder;
use Pamil\Rounder\BasicRounder;
$rounder = new BasicRounder();
// Use new API
$rounder->roundHalfUp(12.15, 1); // 12.2
$rounder->roundHalfUp(-12.315, 2); // -12.31
// Or old round API
$rounder->round(24.5); // 25
$rounder->round(24.5, 0, Rounder::ROUND_DOWN); // 24
// You can even use old PHP_ROUND_* constants
// Warning: as mentioned above, PHP_ROUND_HALF_UP and
// PHP_ROUND_HALF_DOWN have been badly named, so they
// aren't equivalent for Rounder::ROUND_HALF_UP and
// Rounder::ROUND_HALF_DOWN. They are 100% back compatibile,
// $rounder->round() returns the same values round() will return.
$rounder->round(23.5, 0, PHP_ROUND_HALF_EVEN); // 24
$rounder->round(22.5, 0, PHP_ROUND_HALF_EVEN); // 22