/** * Calculate a mathematical expression that uses pokemath-numbers * * @param $expression * * @return Number */ public function calculate($expression) { $translatedExpression = $this->translate($expression); $result = eval('return ' . $translatedExpression . ';'); $decimalResult = new Number($result); // this is bad and needs some work return $decimalResult->convert($this->numberSystem); }
/** * Parse the part of an expression. * * @param $part * * @return Number */ protected function parseExpressionPart($part, NumberSystem $sourceSystem, NumberSystem $targetSystem) { try { // if it is a valid number of the source-system convert it $sourceNumber = new Number($part, $sourceSystem); return $sourceNumber->convert($targetSystem)->value(); } catch (NumberParseException $e) { return $part; } }
<?php use gries\NumberSystem\HexadecimalSystem; use gries\NumberSystem\Number; require_once __DIR__ . '/../vendor/autoload.php'; $number = new Number(15); // the default system is decimal $hexNumber = new Number('FF', new HexadecimalSystem()); echo $number->add($hexNumber)->value(); // 270 (15 + 255) echo $hexNumber->add($number)->value(); // 10E (F + FF)
/** * Get all digits of a given number according to * this number-system. * * @param Number $number * * @return array */ public function getDigits(Number $number) { if (null === $this->delimiter) { return str_split($number->value()); } return explode($this->delimiter, $number->value()); }
public function __construct($value) { parent::__construct($value, new YoloSystem()); }
public function __construct($value) { parent::__construct($value, new PokeNumberSystem()); }