Decimal value object for PHP.
When working with monetary values, normal data types like int or float are not suitable for exact arithmetic. Try out the following in PHP:
var_dump(0.1 + 0.2); // float(0.3)
var_dump(0.1 + 0.2 - 0.3); // float(5.5511151231258E-17)
Handling them as string is a workaround, but as value object you can more easily encapsulate some of the logic.
Solutions like https://php-decimal.io require a PHP extension (would make it faster, but also more difficult for some servers to be available). For details see the wiki.
- Super strict on precision/scale. Does not lose significant digits on its own. You need to
trim()
for this manually. - Speaking API (no le, gt methods).
- Basic math operations and checks supported.
- Immutability.
- Handle very large and very small numbers.
bcmath
PHP extension enabled
composer require spryker/decimal-object
See Documentation for more details.
The following libraries are using the Decimal
value object:
- dereuromark/cakephp-decimal as decimal type replacement for CakePHP ORM.