Есть ли класс 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.