private function _compare(LargeInteger $obj) { $pattern = '/^\\+?(\\d+)(\\.\\d+)?$/'; if (!preg_match($pattern, $this->that->get_value(), $matchFirst) || !preg_match($pattern, $obj->get_value(), $matchSecond)) { return 0; } $intOne = ltrim($matchFirst[1], '0') . str_pad('', 0, '0'); $intTwo = ltrim($matchSecond[1], '0') . str_pad('', 0, '0'); if (strlen($intOne) > strlen($intTwo)) { return 1; } else { if (strlen($intOne) < strlen($intTwo)) { return -1; } } for ($i = 0; $i < strlen($intOne); $i++) { if ((int) $intOne[$i] > (int) $intTwo[$i]) { return 1; } else { if ((int) $intOne[$i] < (int) $intTwo[$i]) { return -1; } } } return 0; }
public function testLessOrEqualThan() { $obj1 = new LargeInteger("12323543598732149872958714082798523523489723897423897423897429874987239847"); $obj2 = new LargeInteger("12323543598732149872958714082798523523489723897423897423897429874987239847"); $obj3 = new LargeInteger("12323543598732149872958714082798523523489723897423897423897429874987239847"); $obj4 = new LargeInteger("12323543598732149872958714082798523523489723897423897423897429874987239847"); $obj5 = new LargeInteger("12323543598732149872958714082798523523489723897423897423897429874987239847"); $obj6 = new LargeInteger("2323543598732149872958714082798523523489723897423897423897429874987239847"); $this->assertTrue($obj1->less_or_equal_than($obj2)); $this->assertTrue($obj3->less_or_equal_than($obj4)); $this->assertFalse($obj5->less_or_equal_than($obj6)); }
<?php require 'vendor/autoload.php'; use LargeInteger\LargeInteger; $uint1 = new LargeInteger("123235435987321498729587140827985234"); $uint2 = new LargeInteger("123235435987321498729587140827985234"); $uint3 = $uint1->add($uint2); //echo bcadd(123235435987321498729587140827985234, 123235435987321498729587140827985234); //echo '<br />'; //echo $uint3->get_value(); //echo '<br />'; //echo bcadd("123235435987321498729587140827985234", "123235435987321498729587140827985234"); $int1 = new LargeInteger(28); $int2 = new LargeInteger(457); var_dump($int1->_compare($int2)); echo '<br/>'; var_dump(bccomp(28, 457));