whateverthing / qed
BCMath函数的包装器
v0.2.0
2023-12-03 00:05 UTC
Requires
- ext-bcmath: *
Requires (Dev)
- phpunit/phpunit: ^10.5
This package is auto-updated.
Last update: 2024-09-03 01:40:53 UTC
README
Qed(发音为“ked”)提供了BCMath操作的链式方法,允许你编写更流畅、更易读的计算代码。
Qed还包括对bcround
、bcceil
和bcfloor
的polyfill函数,这些函数将在未来的PHP版本中提供官方实现。
(请注意,Qed的polyfill函数不一定在数学上是正确的。请不要将它们用于任何一点重要的用途。)
示例
一组基本操作
$num = new Qed('123'); $num = $num->add('27')->mul('4'); echo $num->value; // 600
设置比例
BCMath操作有一个“比例因子”的概念。这可能会变得非常重要——如果不设置合适的比例值,某些数字可能会意外地被截断。
比例可能与精度略有不同。有关更多信息,请参阅PHP网站上的bcscale()文档。
$num = new Qed('123', 5); $divisor = new Qed('456'); $num = $num->div($divisor)->mul('10'); echo $num->value; // 2.69730
请注意,比例遵循流的左侧。如果将Qed对象作为除数(或任何其他操作数)传递,则该对象的规模将被忽略。
舍入
虽然PHP中还没有提供bcround()
,但Qed提供了一个polyfill函数和一个辅助方法。这个polyfill函数非常原始,并且不可靠。
但是,如果你愿意冒险,以下是使用方法:
$num = new Qed('123', 10); $divisor = new Qed('456'); $num = $num->div($divisor)->mul('10')->round(2); echo $num->value; // 2.70
请注意,精度值与正常的“比例”值不同,因为比例因子不能是负值(但精度可以)。返回的Qed对象将具有与原始实例相同的比例值,精度值仅应用于bcround
的内部。
还有一个参数,$roundHalf
,可以是PHP_ROUND_HALF_*
常量之一。有关更多信息,请参阅php.net/round。