091134-创建数字助手类实现万分位转换.md 2.8 KB

创建数字助手类实现万分位转换

时间: 2025年06月09日 11:34
任务: 在 UCore\Helper 下创建数字助手类,实现万分位数据表示转换功能

任务概述

用户需要在 UCore\Helper 命名空间下创建数字助手类,实现万分位数据表示转换静态方法,将数字如 100020 转换为 "10万20" 的中文万分位表示法。

实现内容

1. 创建的文件

  • UCore/Helper/Number.php - 数字助手类
  • UCore/Helper/README_Number.md - 使用说明文档

2. 核心功能

formatToWan() 方法

  • 将数字转换为中文万分位表示法
  • 示例:100020 → "10万20",50000 → "5万"
  • 支持正负数、整数、小数处理

parseFromWan() 方法

  • 万分位表示转换回数字
  • 示例:"10万20" → 100020

smartFormat() 方法

  • 智能选择格式化方式
  • 大于等于1万使用万分位,小于1万使用千分位

formatThousands() 方法

  • 标准千分位数字格式化

3. 特性

  • 多数据类型支持:整数、浮点数、字符串数字
  • 负数处理:自动识别和处理负数
  • 小数支持:保留小数部分并智能格式化
  • 双向转换:数字↔万分位表示
  • 中文友好:使用中文"万"字符

测试验证

通过测试验证了以下功能:

万分位转换测试:
100020     -> 10万20
50000      -> 5万
10000      -> 1万
9999       -> 9999
123456     -> 12万3456
1000000    -> 100万
-100020    -> -10万20
100020.5   -> 10万20.5

反向转换测试:
10万20    -> 100020
5万       -> 50000
12万3456  -> 123456
-10万20   -> -100020

使用示例

在后台控制器中替换 number_format

// 原代码
$balance = number_format($account->balance);

// 使用万分位表示
use UCore\Helper\Number;
$balance = Number::formatToWan($account->balance);

在Grid中使用

$grid->column('balance', '余额')->display(function ($value) {
    return Number::formatToWan($value);
});

技术要点

  1. 使用 mb_strpos()mb_substr() 处理中文字符
  2. 智能处理小数部分,自动去除末尾的0
  3. 万分位转换只在数字≥10000时生效
  4. 所有方法都是静态方法,便于直接调用

提交信息

新增数字助手类:实现万分位数据表示转换功能

- 创建 UCore\Helper\Number 类
- 实现 formatToWan() 方法:将数字转换为中文万分位表示(如 100020 -> 10万20)
- 实现 parseFromWan() 方法:万分位表示转换回数字
- 实现 smartFormat() 方法:智能选择格式化方式
- 实现 formatThousands() 方法:标准千分位格式化
- 支持正负数、整数、小数的处理
- 添加详细的使用说明文档

完成状态

✅ 任务已完成并提交到代码仓库
✅ 功能测试通过
✅ 文档完善
✅ 代码已推送到远程仓库