spryker / decimal
PHP 十进制处理作为值对象
1.0.2
2021-07-30 15:32 UTC
Requires
- php: >=7.2
- ext-bcmath: *
- ext-json: *
Requires (Dev)
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^8.0.0 || ^9.0.0
- spryker/code-sniffer: @stable
README
PHP 的十进制值对象。
背景
当处理货币值时,如 int 或 float 这样的常规数据类型不适用于精确算术。在 PHP 中尝试以下操作
var_dump(0.1 + 0.2); // float(0.3) var_dump(0.1 + 0.2 - 0.3); // float(5.5511151231258E-17)
将它们作为字符串处理是一种权宜之计,但作为值对象可以更轻松地封装一些逻辑。
替代方案
如 https://php-decimal.io 这样的解决方案需要 PHP 扩展(会使它更快,但也会使某些服务器更难以获得)。有关详细信息,请参阅 wiki。
功能
- 在精度/比例上非常严格。它不会自行丢失有效数字。您需要手动使用
trim()
来实现这一点。 - 会话式 API(没有 le、gt 方法)。
- 支持基本数学运算和检查。
- 不可变。
- 处理非常大和非常小的数字。
安装
需求
bcmath
PHP 扩展已启用
Composer(首选)
composer require spryker/decimal-object
用法
有关更多详细信息,请参阅 文档。
实现
以下库使用 Decimal
值对象
- dereuromark/cakephp-decimal 作为 CakePHP ORM 中的十进制类型替代品。