我想用php进行货币单位计算。在 java 中,我们为此目的BigDecimal
因为浮点数和双精度不能准确地表示我们用于货币的 10 倍数。
那么我应该在 php 中使用什么呢?
PHP 不提供开箱即用的BigDecimal
等效物。你会发现最接近的东西是BCMath扩展,但它是相当低级的,不如一个成熟的BigDecimal 类有用。
相反,您可以使用一个名为brick/math的库,该库提供BigDecimal 类,该类非常接近Java:
use BrickMathBigDecimal;
$amount = BigDecimal::of('12.34');
echo $amount->multipliedBy(2); // 24.68
该库在可用时自动使用 BCMath 或 GMP 扩展,以加快计算速度(但也可以在没有它们的情况下工作)。
如果你专门处理钱,我建议你试试砖/钱库。它基于brick/math
并处理精确的货币计算:
use BrickMoneyMoney;
use BrickMathRoundingMode;
$amount = Money::of('12.34', 'USD');
echo $amount->dividedBy(2); // USD 6.17
echo $amount->dividedBy(3, RoundingMode::DOWN); // USD 4.11
免责声明:我是这些库的作者。