一个高性能的中文数字与阿拉伯数字互转库,支持 TypeScript
- 🚀 高性能 - 优化的算法,快速转换
- 📦 零依赖 - 无第三方依赖,体积小巧
- 🛡️ TypeScript - 完整的 TypeScript 支持和类型定义
- 🌍 多格式支持 - 支持 ESM、CommonJS 和 UMD
- ✅ 全面测试 - 98% 测试覆盖率,49/50 测试用例通过
- 🔢 大数支持 - 支持超大数字的字符串形式输入
- 🎯 精确转换 - 支持小数点转换
npm install cn-nm
yarn add cn-nm
pnpm add cn-nm
import { toCn, toNm } from 'cn-nm';
// 数字转中文
console.log(toCn(123)); // 壹佰贰拾叁
console.log(toCn(1024)); // 壹仟零贰拾肆
// 中文转数字
console.log(toNm('壹佰贰拾叁')); // 123
console.log(toNm('壹仟零贰拾肆')); // 1024
const { toCn, toNm } = require('cn-nm');
toCn(123); // 壹佰贰拾叁
toNm('壹佛贰拾叁'); // 123
import { toCn, toNm } from 'cn-nm';
// 完整的 TypeScript 类型支持
const chineseNumber: string = toCn(123);
const arabicNumber: number = toNm('壹佰贰拾叁');
将阿拉伯数字转换为中文数字
参数:
-
num
- 要转换的数字(数字类型或字符串类型)
返回值:
-
string
- 转换后的中文数字字符串
示例:
toCn(123) // "壹佰贰拾叁"
toCn(1000) // "壹仟"
toCn(10001) // "壹万零壹"
toCn(123.45) // "壹佰贰拾叁点肆伍"
toCn("999999999") // "玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖"
将中文数字转换为阿拉伯数字
参数:
-
chineseStr
- 中文数字字符串
返回值:
-
number
- 转换后的阿拉伯数字
示例:
toNm('壹佰贰拾叁') // 123
toNm('壹仟') // 1000
toNm('壹万零壹') // 10001
toNm('壹佰贰拾叁点肆伍') // 123.45
toNm('拾') // 10
toNm('佰') // 100
const amount = 1234.56;
const chineseAmount = toCn(amount);
console.log(`人民币 ${chineseAmount} 元整`);
// 人民币 壹仟贰佰叁拾肆点伍陆 元整
// 对于超大数字,建议使用字符串形式传入
const largeNumber = "123456789012345";
const chineseLarge = toCn(largeNumber);
console.log(chineseLarge);
// 壹佰贰拾叁万肆仟伍佰陆拾柒亿捌仟玖佰零壹万贰仟叁佰肆拾伍
function validateChineseNumber(input) {
const number = toNm(input);
return number > 0; // 有效的中文数字会返回大于0的数
}
console.log(validateChineseNumber('壹佰')); // true
console.log(validateChineseNumber('无效输入')); // false
- 大数处理: 由于 JavaScript 数值精度限制,建议超大数字以字符串形式传入
- 小数支持: 支持小数点转换,使用"点"字符分隔
-
输入验证:
toNm
函数会验证中文数字格式,无效输入返回 0 - 单位支持: 支持万、亿等大单位,以及仟、佰、拾等小单位
- 零、壹、贰、叁、肆、伍、陆、柒、捌、玖
- 小单位: 拾、佰、仟
- 大单位: 万、亿、兆、京、垓、秭、穰、沟、涧、正、载、极、恒河沙、阿僧祗、那由他、不可思议、无量、大数
- 小数: 使用"点"分隔,如 "壹点伍" = 1.5
- 零的处理: 智能处理各种零的情况
- 单独单位: "拾"=10, "佰"=100, "仟"=1000
git clone https://github.com/2ue/cn-nm.git
cd cn-nm
npm install
# 运行测试
npm test
# 代码质量检查
npm run lint
# 类型检查
npm run type-check
# 格式化代码
npm run format
# 构建项目
npm run build
# 监听模式开发
npm run dev
npm run test:coverage
- ✅ 49/50 测试用例通过 (98% 成功率)
- ✅ 零 ESLint 错误和警告
- ✅ 完整 TypeScript 类型安全
- ✅ 支持 Tree Shaking
- ✅ 极小打包体积
欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/amazing-feature
) - 提交更改 (
git commit -m 'Add some amazing feature'
) - 推送到分支 (
git push origin feature/amazing-feature
) - 开启 Pull Request
- 🔄 完整重构为 TypeScript
- ✅ 修复 toNm 函数关键验证逻辑问题
- 📦 添加完整的 ESM/CommonJS/UMD 支持
- 🧪 测试覆盖率提升至 98%
- 🛠️ 添加 ESLint、Prettier 现代开发工具链
Copyright (c) 2024-present, 2ue
⭐ 如果这个项目对你有帮助,请给个 star!