utecca/number

一个用于在 Laravel 中处理任意精度数字的包。

v1.1.0 2023-10-31 08:55 UTC

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