相当于php的BigDecimal

时间:2018-02-28 02:13:43

标签: php

我想在php中进行货币单位计算。在java中,为此我们有BigDecimal因为float和double不能准确地表示我们用于赚钱的基数10倍。

那么我应该在php中使用什么?

1 个答案:

答案 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

免责声明:我是这些库的作者。