Skip to content

Numeric — 数值工具类

Numeric 提供数值转换、范围判断/钳制、四舍五入、格式化、百分比、字节可读化等一系列静态工具方法,全部无需实例化即可调用。

  • 命名空间: kernel\Foundation\Data\Numeric
  • 文件位置: kernel/Foundation/Data/Numeric.php
  • 特点: 全部为静态方法,PHP 7 兼容

转换

val($Target)

将目标变量转为数值(int 或 float)。

转换规则:

  • null0
  • 数值字符串 "123"123(int)
  • 数值字符串 "3.14"3.14(float)
  • 已有 int/float → 原样返回
  • 非数值标量 → 通过 intval/floatval 兜底
参数类型说明
$Targetmixed要转换的目标变量

返回值:int|float

php
Numeric::val(null);     // 0
Numeric::val("123");    // 123
Numeric::val("3.14");   // 3.14
Numeric::val(5);        // 5
Numeric::val(2.5);      // 2.5

范围判断

isBetween($value, $min, $max)

判断值是否位于指定范围 [min, max](闭区间,边界值通过)。

参数类型说明
$valueint|float待判断的值
$minint|float最小值
$maxint|float最大值

返回值:bool

php
Numeric::isBetween(5, 1, 10);   // true
Numeric::isBetween(10, 1, 10);  // true(边界值通过)
Numeric::isBetween(0, 1, 10);   // false

clamp($value, $min, $max)

将值钳制在 [min, max] 区间内。

参数类型说明
$valueint|float原始值
$minint|float最小值
$maxint|float最大值

返回值:int|float — 钳制后的值

php
Numeric::clamp(5, 1, 10);   // 5(不变)
Numeric::clamp(0, 1, 10);   // 1(提升到下限)
Numeric::clamp(15, 1, 10);  // 10(压到上限)

精度

roundTo($value, $decimals = 0)

四舍五入到指定小数位。

参数类型说明
$valuefloat要舍入的值
$decimalsint小数位数,默认 0

返回值:float

php
Numeric::roundTo(3.14159, 2);  // 3.14
Numeric::roundTo(3.14159);     // 3.0
Numeric::roundTo(3.5);         // 4.0

格式化

format($value, $decimals = 2, $decPoint = '.', $thousandsSep = ',')

格式化数值(千分位分隔 + 指定小数位)。

参数类型说明
$valuefloat数值
$decimalsint小数位数,默认 2
$decPointstring小数点字符,默认 '.'
$thousandsSepstring千分位分隔符,默认 ','

返回值:string

php
Numeric::format(1234567.89);          // "1,234,567.89"
Numeric::format(1234567, 0);          // "1,234,567"
Numeric::format(1234.5, 2, '.', '');  // "1234.50"

percentage($value, $total, $decimals = 2)

计算百分比。

参数类型说明
$valueint|float分子
$totalint|float分母
$decimalsint小数位数,默认 2

返回值:float — 百分比数值,例如 28.57(表示 28.57%

php
Numeric::percentage(2, 7);    // 28.57
Numeric::percentage(1, 3, 0); // 33.0
Numeric::percentage(0, 0);    // 0.0(分母为 0 安全返回 0)

fixedDecimals($value, $decimals = 2)

截断到指定小数位,不四舍五入,返回数值(float)。

直接舍弃超出的位数,不做进位处理。

参数类型说明
$valuefloat原始数值
$decimalsint保留的小数位数,默认 2

返回值:int|float — 整数时返回 int,有小数部分时返回 float

php
Numeric::fixedDecimals(3.14159, 2);  // 3.14(float)
Numeric::fixedDecimals(3.14999, 2);  // 3.14(float,截断非四舍五入)
Numeric::fixedDecimals(5);           // 5(int)

padDecimals($value, $decimals = 2)

fixedDecimals 相同的截断逻辑,但不足补零,返回字符串

适用于价格展示等需要固定位数的字符串场景。

参数类型说明
$valuefloat原始数值
$decimalsint小数位数,默认 2

返回值:string

php
Numeric::padDecimals(5);         // "5.00"
Numeric::padDecimals(3.1);       // "3.10"
Numeric::padDecimals(3.14159);   // "3.14"(截断,非四舍五入)
Numeric::padDecimals(3.14999);   // "3.14"(截断,非四舍五入)
Numeric::padDecimals(9.9, 3);    // "9.900"

bytesToHuman($bytes, $decimals = 2)

将字节数转换为人类可读格式。

参数类型说明
$bytesint|float字节数
$decimalsint小数位数,默认 2

返回值:string

php
Numeric::bytesToHuman(1024);        // "1.00 KB"
Numeric::bytesToHuman(1572864);     // "1.50 MB"
Numeric::bytesToHuman(1073741824);  // "1.00 GB"
Numeric::bytesToHuman(0);           // "0 B"