utecca / number
A package for working with arbitrary precision numbers in Laravel.
Installs: 2 556
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- ext-bcmath: *
Requires (Dev)
- orchestra/testbench: ^8.5
- pestphp/pest: ^1.23
- pestphp/pest-plugin-laravel: ^1.4
- pestphp/pest-plugin-parallel: ^1.2
This package is auto-updated.
Last update: 2024-04-30 00:36:20 UTC
README
This package provides a number class that can be used to represent numbers.
All operations are done using bcmath which means that arbitrary precision is supported.
Installation
composer require utecca/number
Usage
// Init via constructor new Number(123.456); // Init via static method Number::of('123.45'); // Force a certain number of decimals Number::of('123.45', 1); // Will return 123.5
Laravel casting
You can have models cast to Number by adding the following to your model:
protected $casts = [ // Amount with two decimals (usually used for monetary values) 'amount' => Utecca\Number\Casts\NumberFromDecimal::class, // Amount with a custom number of decimals 'quantity' => Utecca\Number\Casts\NumberFromDecimal::class . ':4'), ];
Operations
When doing operations, you always have the option to specify the number of decimals to use.
If not specified, the max number of decimals will be taken from the first operand's max.
// Addition $number->add(100); // Subtraction $number->sub(100); // Multiplication $number->mul(100); // Division $number->div(100); // Percentage $number->percent(50); // Round $number->round(2); // Floor $number->floor(); // Ceil $number->ceil(); // Absolute $number->abs();
Other methods
// Various getters $number->isZero(); $number->isPositive(); $number->isPositiveOrZero(); $number->isNegative(); $number->isNegativeOrZero(); $number->lt(100); $number->lte(100); $number->gt(100); $number->gte(100); $number->eq(100); // Various formatters $number->toString(); $number->toInt(); $number->inCents(); // Only works if the number has two decimals or less