Skip to content

Repository files navigation

GitHub Workflow StatusPackagist Version

Math

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:

useKdabrow\Math\Number;
newNumber("100"); // 100newNumber("-100"); // -100newNumber("100,11"); // 100.11newNumber("100.11"); // 100.11newNumber("10,000.11"); // 10000.11newNumber("10 000.11"); // 10000.11newNumber("10'000.11"); // 10000.11newNumber(".11"); // 0.11newNumber(",11"); // 0.11newNumber("0,11"); // 0.11newNumber("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(newNumber('100'));
// array of strings $number->add(['100', '100']);
// array of Number objects$number->add([newNumber('100'), newNumber('100')]);
// object implementing ArrayAccess interface$number->add(newCollection()); // many formats or same elements at the same time$number->add('100', newNumber('200'), ['100', newNumber('200')]); 

Add

useKdabrow\Math\Number;
$number = newNumber('700');
$number->add('100'); // 800

Subtract

useKdabrow\Math\Number;
$number = newNumber('700');
$number->subtract('100'); // 600

Multiply

useKdabrow\Math\Number;
$number = newNumber('700');
$number->multiply('2'); // 1400

Divide

useKdabrow\Math\Number;
$number = newNumber('700');
$number->divide('2'); // 350

Square root

useKdabrow\Math\Number;
$number = newNumber('16');
$number->sqrt(); // 4

Power

useKdabrow\Math\Number;
$number = newNumber('2');
$number->pow('3'); // 8

Is equal

useKdabrow\Math\Number;
$number = newNumber('2');
$number->isEqual('3'); // false$number->isEqual('2'); // true$number->isEqual('1'); // false

Is equal or bigger

useKdabrow\Math\Number;
$number = newNumber('2');
$number->isEqualOrBigger('3'); // false$number->isEqualOrBigger('2'); // true$number->isEqualOrBigger('1'); // true

Is equal or lower

useKdabrow\Math\Number;
$number = newNumber('2');
$number->isEqualOrLower('3'); // true$number->isEqualOrLower('2'); // true$number->isEqualOrLower('1'); // false

Is lower

useKdabrow\Math\Number;
$number = newNumber('2');
$number->isLower('3'); // true$number->isLower('2'); // true$number->isLower('1'); // false

Is bigger

useKdabrow\Math\Number;
$number = newNumber('2');
$number->isBigger('3'); // false$number->isBigger('2'); // true$number->isBigger('1'); // true

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

About

Objective wrper over BCMath

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages