/** * @param Number|integer $number * @return self */ public function sub($number) { if (!$number instanceof Number) { $number = new Number($number); } $real_value = new Number($this->getRealValue()); $this->setValue($real_value->bcsub($number)->getValue()); return $this; }
/** * @param Number|Percentage|String $limitDown */ public function setLimitDown($limitDown) { if ($limitDown instanceof Percentage) { $limitDown = $limitDown->of($this->getValue()); } elseif (!$limitDown instanceof Number) { $limitDown = new Number($limitDown); } if ($limitDown->isPositive()) { $limitDown->bcmul('-1'); } $this->limitDown = $limitDown; }
public function testPercentageIntegrations() { $percent = new \ebussola\common\datatype\number\Percentage(15); $number = new \ebussola\common\datatype\Number(500); $this->assertEquals('575,00', (string) $number->bcadd($percent)); $percent = new \ebussola\common\datatype\number\Percentage(15); $number = new \ebussola\common\datatype\Number(500); $this->assertEquals('425,00', (string) $number->bcsub($percent)); $percent = new \ebussola\common\datatype\number\Percentage(15); $number = new \ebussola\common\datatype\Number(500); $this->assertEquals('37.500,00', (string) $number->bcmul($percent)); $percent = new \ebussola\common\datatype\number\Percentage(15); $number = new \ebussola\common\datatype\Number(500); $this->assertEquals('6,67', (string) $number->bcdiv($percent)); }
public function testPreserve() { $num = new Number(123); $new_num = $num->preserve()->bcsub(23); $this->assertEquals(123, $num->getValue()); $this->assertEquals(100, $new_num->getValue()); }
/** * @return string */ public function __toString() { if ($this->showSymbol) { return parent::__toString() . '%'; } else { return parent::__toString(); } }
/** * @param string $polarity */ public function __construct($polarity = '+') { parent::__construct(0); if ($polarity == '+') { $this->setNegative(false); } else { $this->setNegative(true); } }
/** * @param Number|string $value * @return Currency */ public function setValue($value) { parent::setValue($value); if (preg_match('/^\\(.*\\)$/is', trim($value))) { $this->setNegative(true); $this->setRawValue('-' . $this->getValue()); } return $this; }
/** * @param $name * @param $args * @return String */ protected function bcCalc($name, $args) { $value = current($args); if ($value instanceof number\Percentage) { switch ($name) { case 'bcmul': case 'bcdiv': $value->bcdiv(100); break; default: $value->of($this); break; } } elseif (!$value instanceof Number) { if (is_numeric($value)) { $value = new Number($value); } else { trigger_error('BC Functions must be compared with another Number or a valid number'); } } if ($name == 'bcdiv' && $value->getValue() == 0) { $result = 0; } else { $result = $name($this->getValue(), $value->getValue(), $this->getPrecision()); } return $result; }