utecca / number
一个用于在 Laravel 中处理任意精度数字的包。
v1.1.0
2023-10-31 08:55 UTC
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-09-30 01:46:48 UTC
README
本包提供了一个用于表示数字的 Number 类。
所有操作都使用 bcmath 执行,这意味着支持任意精度。
安装
composer require utecca/number
使用
// 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 类型转换
您可以通过在模型中添加以下内容将模型转换为 Number 类型
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'), ];
操作
在进行操作时,您始终可以选择指定要使用的十进制位数。
如果没有指定,最大十进制位数将取自第一个操作数的最大值。
// 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();
其他方法
// 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