Несмотря на то, что этот вопрос старый, он появляется в качестве первого результата при поиске в Google для BigInteger PHP
, поэтому для всех, кто заинтересовался, я открыл библиотеку под названием Brick \ Math , предлагающую BigInteger
, BigDecimal
и BigRational
классов.
Использование
use Brick\Math\BigInteger;
use Brick\Math\RoundingMode;
Сложение:
echo BigInteger::of('9999999999999999999999999')->plus(1);
// 10000000000000000000000000
Вычитание:
echo BigInteger::of('10000000000000000000000000')->minus(1);
// 9999999999999999999999999
Умножение:
echo BigInteger::of('3333333333333333333333333')->multipliedBy(11);
// 36666666666666666666666663
Разделение:
echo BigInteger::of('1000000000000000000000')->dividedBy(3, RoundingMode::UP);
// 333333333333333333334
Вычисление:
echo BigInteger::of(11)->power(50);
// 11739085287969531650666649599035831993898213898723001
Вы можете легко связывать вызовы методов:
echo BigInteger::of(3)->multipliedBy(7)->minus(1)->dividedBy(10);
Установка
Просто установите с помощью Composer и все готово:
composer require brick/math
Библиотека автоматически использует GMP и BCMath расширения, когда они доступны, для ускорения вычислений, но также будут работать без них благодаря чистой реализации PHP.