# [Nzh](https://blog.whyoop.com/nzh/docs/#/?id=nzh)
`Nzh`適用于需要轉換**阿拉伯數字**與**中文數字**的場景。
特點如下:
* 以字符串的方式轉換,沒有超大數及浮點數等問題(請自行對原數據進行四舍五入等操作)
* 支持科學記數法字符串的轉換
* 支持口語化
* 支持自定義轉換(不論是`兆`,`京`還是`厘`都可以用)
* 對超大數支持用爭議教少的`萬萬億`代替`億億`
* 當然,你還可以把中文數字再轉回阿拉伯數字
## [安裝](https://blog.whyoop.com/nzh/docs/#/?id=%e5%ae%89%e8%a3%85)
~~~
$ npm install nzh --save
$ bower install nzh --save
~~~
## [引用](https://blog.whyoop.com/nzh/docs/#/?id=%e5%bc%95%e7%94%a8)
~~~
var Nzh = require("nzh");
var nzhcn = require("nzh/cn"); //直接使用簡體中文
var nzhhk = require("nzh/hk"); //繁體中文
~~~
> 注: 瀏覽器直接引用請使用`dist/`文件夾中的文件 (適配CMD,AMD);
## [示例](https://blog.whyoop.com/nzh/docs/#/?id=%e7%a4%ba%e4%be%8b)
~~~
var nzhcn = Nzh.cn; // 使用簡體中文, 另外有 Nzh.hk -- 繁體中文
nzhcn.encodeS(100111); // 轉中文小寫 >> 十萬零一百一十一
nzhcn.encodeB(100111); // 轉中文大寫 >> 壹拾萬零壹佰壹拾壹
nzhcn.encodeS("1.23456789e+21"); // 科學記數法字符串 >> 十二萬三千四百五十六萬萬七千八百九十萬億
nzhcn.toMoney("100111.11"); // 轉中文金額 >> 人民幣壹拾萬零壹佰壹拾壹元壹角壹分
~~~
## [API](https://blog.whyoop.com/nzh/docs/#/?id=api)
### [Nzh.cn / Nzh.hk](https://blog.whyoop.com/nzh/docs/#/?id=nzhcn-nzhhk)
為方便使用,默認實現了兩個對像:
* `Nzh.cn`簡體中文
* `Nzh.hk`正體中文(繁體中文)
都包含以下方法:
* `encodeS(num,options)`轉中文小寫
* `encodeB(num,options)`轉中文大寫
* `toMoney(num,options)`轉中文金額
* `decodeS(zh_num)`中文小寫轉數字
* `decodeB(zh_num)`中文大寫轉數字
~~~
// options.tenMin
~~~
// encodeS默認true nzhcn.encodeS("13.5"); // 十三點五 nzhcn.encodeS("13.5", {tenMin:false}); // 一十三點五 // encodeB默人false nzhcn.encodeB("13.5"); // 壹拾叁點伍 nzhcn.encodeB("13.5", {tenMin:true}); // 拾叁點伍
// options.ww
//Nzh.cn和Nzh.hk未引入兆、京等單位,超千萬億位時,默認以爭議較少的萬萬億為單位 nzhcn.encodeS(1e16); // 一萬萬億 nzhcn.encodeS(1e16, {ww: false}); // 一億億
// options.complete
nzhcn.toMoney("1"); //人民幣壹元整 nzhcn.toMoney("1",{complete:true}); //人民幣壹元零角零分 nzhcn.toMoney("0.1"); //人民幣壹角 nzhcn.toMoney("0.1",{complete:true}); //人民幣零元壹角零分
//outSymbol 默認 true nzhcn.toMoney("1"); //人民幣壹元整 nzhcn.toMoney("1",{outSymbol:false}); //壹元整
~~~
### options 說明
- `tenMin`: 十的口語化開關, 默認值為 `false`
- *注: `Nzh.cn`和`Nzh.hk`中的`encodeS`方法默認 `true`*
- `ww`: "萬萬"化開關, 默認值為 `true`
- `complete`: 輸出完整金額開關, `toMoney` 函數專用配置, 默認 `false`
- `outSymbol`: 輸出金額前綴字符, `toMoney` 函數專用配置, 默認 `true`
### new Nzh(langs) 自定義
```javascript
var nzh = new Nzh({
ch: "〇壹貳叁肆伍陸柒捌玖", // 數字字符
ch_u: "個十百千萬億兆京", // 數位單位字符,萬以下十進制,萬以上萬進制,個位不能省略
ch_f: "負", // 負字符
ch_d: "點", // 小數點字符
m_u: "元角分厘", // 金額單位
m_t: "人民幣", // 金額前綴
m_z: "正" // 金額無小數后綴
});
nzh.encode("10001000000000000"); // 壹京〇壹兆
nzh.decode("壹兆"); // 1000000000000
nzh.toMoney("1.234"); // 人民幣壹元貳角叁分肆厘
~~~
#### [nzh.encode(num,options)](https://blog.whyoop.com/nzh/docs/#/?id=nzhencodenumoptions)
數字轉中文
#### [nzh.decode(zh\_num,options)](https://blog.whyoop.com/nzh/docs/#/?id=nzhdecodezh_numoptions)
中文轉數字
#### [nzh.toMoney(num,options)](https://blog.whyoop.com/nzh/docs/#/?id=nzhtomoneynumoptions)
數字轉金額