Есть ли класс BigInteger в PHP?

Есть ли класс BigInteger в PHP? Если да, то каким образом я могу получить к нему доступ или использовать его?

Solutions Collecting From Web of "Есть ли класс BigInteger в PHP?"

Надеемся, полезные ссылки:

EDIT: Math_BigInteger

Пример из http://phpseclib.sourceforge.net/documentation/math.html :

Реализует произвольную арифметическую библиотеку целых чисел. Использует gmp или bcmath, если он доступен, и внутреннюю реализацию, в противном случае.

<?php include('Math/BigInteger.php'); $a = new Math_BigInteger(2); $b = new Math_BigInteger(3); $c = $a->add($b); echo $c->toString(); // outputs 5 ?> 

Несмотря на то, что этот вопрос является старым, он возникает как первый результат, когда Googling для 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.