之前工作中碰到了数字转中文的情景,网上找的现成方法或多或少不合我的口味,最后还是自已写了一个.
现在整理了一下,补充了繁体,自定义字符,以及反函数(中文数字转阿拉伯数字)
现在发布出来,希望能合大家的口味.
demo: http://cnwhy.github.io/nzh/demo/index.html
项目地址: https://github.com/cnwhy/nzh 欢迎push
Nzh
Nzh适用于开发过程中需要将数字转换为中文的场景 以字符串的方式转换,解决超大数及浮点数等问题,请自行对原数据进行四舍五入等操作.
install
npm install nzh bower install nzh
引用
var Nzh = require("nzh");
demo
var nzhcn = Nzh.cn; //使用简体中文,另外有 Nzh.hk -- 繁体中文 nzhcn.encodeS(100111) //转中文小写 >> 十万零一百一十一 nzhcn.encodeB(100111) //转中文大写 >> 壹拾万零壹佰壹拾壹 nzhcn.toMoney('100111.11') //转中文金额 >> 人民币壹拾万零壹佰壹拾壹元壹角壹分
关于十的口语化
//小写默认启用 nzhcn.encodeS(13.5) //十三点五 nzhcn.encodeS(13.5,fasle) //一十三点五 //大写默人关闭 nzhcn.encodeB(13.5) //壹拾叁點伍 nzhcn.encodeB(13.5,true) //拾叁點伍
关于关于超级大数
//默认未引入"兆 京"等单位,超"千万亿"位时,默认以争议教少的"万万亿"为单位 nzhcn.encodeS(1e16) //一万万亿 nzhcn.encodeS(1e16,null,false) //一亿亿
中文转阿拉伯数字
nzhcn.decodeS(str) //小写转数字 十万零一百一十一 =>> 100111 nzhcn.decodeB(str) //大写转数字 壹拾万零壹佰壹拾壹 =>> 100111
自定义
var custom = new Nzh({ ch: '〇壹贰叁肆伍陆柒捌玖' //数字字符 ,ch_u: '个十百千万亿兆京' //数位单位字符 万以下10进制,万以上万进制,个位不能省略 ,other: '负点' //负数,小数字符 ,m_t: '人民币' //金额前缀 ,m_z: '正' //无小数后缀 ,m_u: '元角分厘' //金额单位 }); custom.encode("10001000000000000") //壹京〇壹兆 custom.decode("壹兆") //1000000000000 custom.toMoney("1.234") //人民币壹元贰角叁分肆厘