我想在php中进行货币单位计算。在java中,为此我们有BigDecimal
因为float和double不能准确地表示我们用于赚钱的基数10倍。
那么我应该在php中使用什么?
答案 0 :(得分:0)
PHP不提供现成的BigDecimal
等效项。您会发现最接近的扩展名是BCMath,但它是底层的,并且不如成熟的BigDecimal类有用。
相反,您可以使用名为brick/math的库,该库提供一个BigDecimal类,该类与Java的类非常接近:
use Brick\Math\BigDecimal;
$amount = BigDecimal::of('12.34');
echo $amount->multipliedBy(2); // 24.68
该库在可用时会自动使用BCMath或GMP扩展名来加快计算速度(但也可以在没有它们的情况下使用)。
但是,如果您专门处理金钱问题,建议您尝试brick/money库。它基于brick/math
并处理精确的货币计算:
use Brick\Money\Money;
use Brick\Math\RoundingMode;
$amount = Money::of('12.34', 'USD');
echo $amount->dividedBy(2); // USD 6.17
echo $amount->dividedBy(3, RoundingMode::DOWN); // USD 4.11
免责声明:我是这些库的作者。