如何使用PHP库brick/money便捷比较金额?
关于brick/money库的金额比较问题
我选择使用PHP库brick/money进行货币计算,因为浮点数精度不足,且将金额转换为美分以仅用整数计算的操作繁琐,该库能更便捷处理舍入问题。我未选用money PHP库,因其灵活性差,要求输入为类整数形式,且我不愿编写输入输出包装器及调试美分相关内容。
我发现brick/money存在文档不完善的小缺陷,搜索直接比较两个金额的方法却未找到官方直观的实现方式。
代码示例
use Brick\Money\Money; $money1 = Money::of(50, 'MXN'); // MXN 50.00 $money1 = $money1->plus('10'); // MXN 60.00 -- whatever operation $money2 = Money::of(50, 'MXN'); // MXN 50.00 $money2 = $money1->minus('10'); // MXN 40.00 -- whatever operation
问题
有没有更简便的方法比较这两个金额?是否每次比较都需调用->getMinorAmount()->toInt()?
是否需要如下方式进行基础验证?
if ($money1->getMinorAmount()->toInt() < 0 || $money1->getMinorAmount()->toInt() < $money2->getMinorAmount()->toInt()) { $error = true; }
而在money PHP中可使用如下函数:
$result = $value1->equals($value2); $result = $value1->greaterThan($value2); $result = $value1->greaterThanOrEqual($value2); //etc...
这是功能缺失还是我有所遗漏?感谢解答。
内容的提问来源于stack exchange,提问作者El Gucs
相关产品推荐
相关产品推荐

