金额格式化工具
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f1b049da/xz2026206。
技能介绍
为什么要单独做一个金额格式化
在合同、提成单和财务报表里,金额展示看起来只是排版问题,实际上坑不少:前端直接用 toLocaleString 默认配置,小数位数不统一,表格里 128000.5 和 0.05 混排显得极不专业;人民币大写要么手写正则容易漏掉「角分补齐」和「整」字规则,要么干脆不写。这个技能专注解决展示层的格式问题,不碰业务计算。
它如何工作
核心是两个函数:formatAmount 负责阿拉伯数字展示,amountToCnUpper 负责大写栏。Agent 调用时按以下步骤:
- 展示列统一走
formatAmount:默认zh-CN区域,强制两位小数,千分位自动分隔,例如128000.5输出128,000.50。 - 大写栏走
amountToCnUpper:处理>= 0且< 1e14的数值,输出「壹万贰仟元整」这类标准写法,角分补齐,整数末尾加「整」。 - 打印模板先写数字,再双栏并列:阿拉伯数字一行、大写一行,方便财务人员核对。
- 自测必跑四个用例:
128000.5、0、0.05、非法值,确保边界行为符合预期。
适用边界与注意点
这个技能不做加减乘除。如果业务需要精确金额计算,请转用 currency.js 或 Big.js,把计算结果传进来格式化即可,避免浮点误差污染展示层。
几条硬约束需要牢记:
- 非法或空值统一展示
-,大写栏返回空串或—,不要抛异常中断渲染。 - 大写不处理负数,避免输出「负壹元」这类可能误导财务的文案,负数场景需产品确认后再决定展示策略。
- 大写范围限制在
< 1e14,超过这个量级的金额建议走专门的财务系统,本技能不保证正确性。 - 计算前务必先转
Number,不要对已带千分位的字符串直接做算术操作,否则会得到NaN。
实现细节已标注 小四原创,可直接参考源码复用或二次开发。
使用场景
- 在合同管理系统里给金额字段统一加千分位和两位小数,导出打印时显示阿拉伯数字与人民币大写双栏
- 做提成单模板时把实发金额按 zh-CN 区域格式化为两位小数,方便直接送打印
- 在财务报表表格的金额列批量格式化 128000.5 这类数值,让 0.05 也固定显示两位小数
- 给应收账款单据写大写栏时输出「壹万贰仟元整」格式,整数自动补「整」字
适合人员
- 对接合同或财务系统的后端开发者,需要统一金额字段的展示格式而非计算逻辑
- 维护提成单和工资单模板的 HR 或财务人员,要求金额小数位一致且带标准人民币大写
- 负责财务报表前端展示的工程师,要在表格列里稳定输出千分位和两位小数
- 处理打印模板的行政或财务助理,需要把阿拉伯数字金额转成中文大写填入单据