|
|
6 месяцев назад | |
|---|---|---|
| .. | ||
| Carbon | 8 месяцев назад | |
| Model | 8 месяцев назад | |
| Api.php | 8 месяцев назад | |
| Arr.php | 8 месяцев назад | |
| Bc.php | 8 месяцев назад | |
| Cache.php | 8 месяцев назад | |
| CacheTag.php | 8 месяцев назад | |
| Color.php | 6 месяцев назад | |
| Datetime.php | 8 месяцев назад | |
| File.php | 8 месяцев назад | |
| Helper.php | 8 месяцев назад | |
| Info.php | 8 месяцев назад | |
| JsonOb.php | 8 месяцев назад | |
| Logger.php | 7 месяцев назад | |
| NumberWan.php | 7 месяцев назад | |
| PageApp.php | 8 месяцев назад | |
| PageList.php | 8 месяцев назад | |
| README_Number.md | 7 месяцев назад | |
| Search.php | 8 месяцев назад | |
| Str.php | 8 месяцев назад | |
| Url.php | 8 месяцев назад | |
UCore\Helper\NumberWan 类专注于万分位和中文数位单位的数字格式化、转换功能。
✨ 核心特性:
formatToWan()支持40位精度的万分位转换:
use UCore\Helper\NumberWan;
// 超大精度数值转换
echo NumberWan::formatToWan('12345678901234567890.12345678901234567890');
// 输出: 1234567890123456万7890.123456789
echo NumberWan::formatToWan('999999999999999999990000.12345678901234567890');
// 输出: 99999999999999999999万.123456789
// 指定小数精度
echo NumberWan::formatToWan('100020.123456789', 5);
// 输出: 10万20.12345
parseFromWan()将万分位表示转换回高精度数字:
echo NumberWan::parseFromWan('10万20'); // 输出: 100020
echo NumberWan::parseFromWan('5万'); // 输出: 50000
echo NumberWan::parseFromWan('1万'); // 输出: 10000
echo NumberWan::parseFromWan('12万3456'); // 输出: 123456
echo NumberWan::parseFromWan('-10万20'); // 输出: -100020
echo NumberWan::parseFromWan('1万.123456789'); // 输出: 10000.123456789
smartFormat()根据数字大小自动选择合适的格式化方式:
// 大于等于1万使用万分位表示
echo NumberWan::smartFormat('12345678901234567890.12345678901234567890');
// 输出: 1234567890123456万7890.123456789
// 小于1万直接显示
echo NumberWan::smartFormat('9999.99999999999999999999');
// 输出: 9999.99999999999999999999
// 启用中文数位单位
echo NumberWan::smartFormat('12345678901234567890', 20, true);
// 输出: 1234京5678901234567890
validate()// 验证数字是否符合精度要求(默认20位整数+20位小数)
echo NumberWan::validate('12345678901234567890.12345678901234567890'); // true
echo NumberWan::validate('123456789012345678901.12345678901234567890'); // false (21位整数)
// 自定义精度要求
echo NumberWan::validate('1234567890.1234567890', 10, 10); // true
truncate()// 截取到指定精度(默认20位整数+20位小数)
echo NumberWan::truncate('123456789012345678901.123456789012345678901');
// 输出: 23456789012345678901.1234567890123456789
// 自定义精度截取
echo NumberWan::truncate('1234567890.1234567890', 5, 5);
// 输出: 67890.12345
formatToChineseUnits()支持万、亿、兆、京、垓等中文数位单位:
// 完整模式显示所有单位
echo NumberWan::formatToChineseUnits('12345678901234567890');
// 输出: 1234京5678兆9012亿3456万7890
echo NumberWan::formatToChineseUnits('123456789012345678901234');
// 输出: 1234垓5678京9012兆3456亿7890万1234
// 简化模式只显示最大单位
echo NumberWan::formatToChineseUnits('12345678901234567890', 20, true);
// 输出: 1234京5678901234567890
// 带小数的转换
echo NumberWan::formatToChineseUnits('12345678901234567890.123456789');
// 输出: 1234京5678兆9012亿3456万7890.123456789
formatToSmartChineseUnits()自动选择合适的中文单位显示:
echo NumberWan::formatToSmartChineseUnits('123456789');
// 输出: 1亿23456789
echo NumberWan::formatToSmartChineseUnits('12345678901234567');
// 输出: 1京2345678901234567
echo NumberWan::formatToSmartChineseUnits('9999');
// 输出: 9999 (小于万直接显示)
parseFromChineseUnits()将中文数位单位表示转换回数字:
echo NumberWan::parseFromChineseUnits('1万2345');
// 输出: 12345
echo NumberWan::parseFromChineseUnits('12亿3456万7890');
// 输出: 1234567890
echo NumberWan::parseFromChineseUnits('1234京5678兆9012亿3456万7890');
// 输出: 12345678901234567890
echo NumberWan::parseFromChineseUnits('1万.123456789');
// 输出: 10000.123456789
| 单位 | 名称 | 数值 |
|---|---|---|
| 万 | 万 | 10^4 |
| 亿 | 亿 | 10^8 |
| 兆 | 兆 | 10^12 |
| 京 | 京 | 10^16 |
| 垓 | 垓 | 10^20 |
原代码:
$balance = number_format($account->balance);
使用万分位表示:
use UCore\Helper\Number;
$balance = Number::formatToWan($account->balance);
// 使用万分位表示
$grid->column('balance', '余额')->display(function ($value) {
return Number::formatToWan($value);
});
// 使用高精度万分位表示
$grid->column('balance', '余额')->display(function ($value) {
return Number::formatToWanPrecision($value);
});
// 使用中文数位单位
$grid->column('amount', '金额')->display(function ($value) {
return Number::formatToSmartChineseUnits($value);
});
// 智能格式化(启用中文数位单位)
$grid->column('total', '总计')->display(function ($value) {
return Number::smartFormatPrecision($value, true, 20, true);
});
// 使用万分位表示
$show->field('balance', '余额')->as(function ($value) {
return Number::formatToWan($value);
});
// 使用中文数位单位
$show->field('amount', '金额')->as(function ($value) {
return Number::formatToChineseUnits($value, 20, true);
});
*Precision)