php-collective/decimal-object

PHP 十进制处理作为值对象

1.2.1 2023-12-07 13:56 UTC

This package is auto-updated.

Last update: 2024-09-09 17:28:02 UTC


README

CI codecov Latest Stable Version Minimum PHP Version PHPStan License

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)

将它们作为字符串处理是一种解决方案,但作为值对象,您可以更轻松地封装一些逻辑。

替代方案

类似于 php-decimal 的解决方案需要自定义 PHP 扩展(会使它更快,但也可能使某些服务器难以使用)。货币值本身也可以使用 brick/moneymoneyphp/money 处理。

有关详细信息,请参阅 wiki

注意:如果您正在寻找 pre PHP 8.1 版本,请查看 遗留库

功能

  • 对精度/比例要求非常严格。不会自行丢失有效数字。您需要手动 trim()
  • 会话式 API(无 le、gt 方法)。
  • 支持基本数学运算和检查。
  • 不可变。
  • 处理非常大的和非常小的数字。

安装

要求

  • bcmath PHP 扩展已启用

Composer(首选)

composer require php-collective/decimal-object

使用

有关更多详细信息,请参阅 文档

实现

以下库使用 Decimal 值对象

此原始库于 2019 年为 Spryker 电子商务框架编写,自那时以来,经过数百万客户和订单以及其他复杂底层计算的考验。这里的是专门升级且独立维护的版本,适用于整个 PHP 生态系统。

祝您享受!