abivia / money
货币值操作库,一个支持四舍五入的 BCMath 库。
1.2.0
2023-08-08 13:06 UTC
Requires
- php: ^8.0|^8.1
- ext-bcmath: *
Requires (Dev)
- phpunit/phpunit: ^9.5
README
Abivia Money 是一个紧凑、流畅的库,实现了正确的四舍五入逻辑,并可选择回退到 BCMath 的截断模式。Money 实例是不可变的。
Money 实现了金融计算必需的 BCMath 函数,以及其他有用的函数 ceil
、floor
、max
、min
和 round
。
Money 对象可以保留单独的缩放值。如果对具有不同缩放值的两个对象执行操作,则结果将保留更高的精度。
四舍五入问题
示例:$35.04 / 1.15 = $30.469565217
当处理货币时,没有分数美分。这应该四舍五入到 30.47。但是
echo bcdiv('35.04', '1.15', 2); 30.46
这是一个四舍五入误差为 .95 美分而不是 0.05 美分。对于几十次计算来说可能不是大问题,但是如果重复一百万次,那就是 900,000 美元的差异。
use Abivia\Money; Money::setScale(2); echo Money::make('35.04')->div('1.15'); 30.47