![](/style/images/good.png)
![](/style/images/bad.png)
GitHub - karoldabro/math: Objective wrper over BCMath
source link: https://github.com/karoldabro/math
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Objective wrapper over BCMath
Installation
Install via composer
composer require kdabrow/math
Usage
First declare mutable number. Second string is validated and mutated to correct format. Here are examples with converted number in the comment:
use Kdabrow\Math\Number;
new Number("100"); // 100
new Number("-100"); // -100
new Number("100,11"); // 100.11
new Number("100.11"); // 100.11
new Number("10,000.11"); // 10000.11
new Number("10 000.11"); // 10000.11
new Number("10'000.11"); // 10000.11
new Number(".11"); // 0.11
new Number(",11"); // 0.11
new Number("0,11"); // 0.11
new Number("0.11"); // 0.11
Then use API provided by Number class. All methods (with the 'sqrt' exception) accept arguments in a given formats:
// numeric string
$number->add('100');
// Number object
$number->add(new Number('100'));
// array of strings
$number->add(['100', '100']);
// array of Number objects
$number->add([new Number('100'), new Number('100')]);
// object implementing ArrayAccess interface
$number->add(new Collection());
// many formats or same elements at the same time
$number->add('100', new Number('200'), ['100', new Number('200')]);
use Kdabrow\Math\Number;
$number = new Number('700');
$number->add('100'); // 800
Subtract
use Kdabrow\Math\Number;
$number = new Number('700');
$number->subtract('100'); // 600
Multiply
use Kdabrow\Math\Number;
$number = new Number('700');
$number->multiply('2'); // 1400
Divide
use Kdabrow\Math\Number;
$number = new Number('700');
$number->divide('2'); // 350
Square root
use Kdabrow\Math\Number;
$number = new Number('16');
$number->sqrt(); // 4
Power
use Kdabrow\Math\Number;
$number = new Number('2');
$number->pow('3'); // 8
Is equal
use Kdabrow\Math\Number;
$number = new Number('2');
$number->isEqual('3'); // false
$number->isEqual('2'); // true
$number->isEqual('1'); // false
Is equal or bigger
use Kdabrow\Math\Number;
$number = new Number('2');
$number->isEqualOrBigger('3'); // true
$number->isEqualOrBigger('2'); // true
$number->isEqualOrBigger('1'); // false
Is equal or lower
use Kdabrow\Math\Number;
$number = new Number('2');
$number->isEqualOrLower('3'); // false
$number->isEqualOrLower('2'); // true
$number->isEqualOrLower('1'); // true
Is lower
use Kdabrow\Math\Number;
$number = new Number('2');
$number->isLower('3'); // false
$number->isLower('2'); // false
$number->isLower('1'); // true
Is bigger
use Kdabrow\Math\Number;
$number = new Number('2');
$number->isBigger('3'); // true
$number->isBigger('2'); // false
$number->isBigger('1'); // false
Development
To run unit tests go into project folder and type in the console
vendor/bin/phpunit
Package contains docker container capable of running tests
docker compose run php vendor/bin/phpunit
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK