Esempio n. 1
0
 /**
  * @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;
 }
Esempio n. 2
0
 /**
  * @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;
 }
Esempio n. 3
0
 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));
 }
Esempio n. 4
0
 public function testPreserve()
 {
     $num = new Number(123);
     $new_num = $num->preserve()->bcsub(23);
     $this->assertEquals(123, $num->getValue());
     $this->assertEquals(100, $new_num->getValue());
 }
Esempio n. 5
0
 /**
  * @return string
  */
 public function __toString()
 {
     if ($this->showSymbol) {
         return parent::__toString() . '%';
     } else {
         return parent::__toString();
     }
 }
Esempio n. 6
0
 /**
  * @param string $polarity
  */
 public function __construct($polarity = '+')
 {
     parent::__construct(0);
     if ($polarity == '+') {
         $this->setNegative(false);
     } else {
         $this->setNegative(true);
     }
 }
Esempio n. 7
0
 /**
  * @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;
 }
Esempio n. 8
0
 /**
  * @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;
 }