Git Product home page Git Product logo

nzh's Introduction

Nzh

Nzh 适用于需要转换阿拉伯数字中文数字的场景。
特点如下:

  • 以字符串的方式转换,没有超大数及浮点数等问题(请自行对原数据进行四舍五入等操作)
  • 支持科学记数法字符串的转换
  • 支持口语化
  • 支持自定义转换(不论是,还是都可以用)
  • 对超大数支持用争议较少的万万亿代替亿亿
  • 当然,你还可以把中文数字再转回阿拉伯数字

安装

$ npm install nzh --save
$ bower install nzh --save

引用

var Nzh = require("nzh");
var nzhcn = require("nzh/cn"); //直接使用简体中文
var nzhhk = require("nzh/hk"); //繁体中文

注: 浏览器直接引用请使用 dist/文件夹中的文件 (适配CMD,AMD);

示例

var nzhcn = Nzh.cn;                 // 使用简体中文,  另外有 Nzh.hk -- 繁体中文

nzhcn.encodeS(100111);              // 转中文小写 >> 十万零一百一十一
nzhcn.encodeB(100111);              // 转中文大写 >> 壹拾万零壹佰壹拾壹
nzhcn.encodeS("1.23456789e+21");    // 科学记数法字符串 >> 十二万三千四百五十六万万七千八百九十万亿
nzhcn.toMoney("100111.11");         // 转中文金额 >> 人民币壹拾万零壹佰壹拾壹元壹角壹分

API

Nzh.cn / Nzh.hk

为方便使用,默认实现了两个对像:

  • 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",{unOmitYuan:true});    //人民币零元壹角
nzhcn.toMoney("0.1",{complete:true});      //人民币零元壹角零分

//outSymbol  默认 true
nzhcn.toMoney("1");                        //人民币壹元整
nzhcn.toMoney("1",{outSymbol:false});      //壹元整

options 说明

  • tenMin: 十的口语化开关, 默认值为 false
    • 注: Nzh.cnNzh.hk中的encodeS方法默认 true
  • ww: "万万"化开关, 默认值为 true
  • unOmitYuan: 个为零时不省略元, toMoney 函数专用配置, 默认 false
  • complete: 输出完整金额开关, toMoney 函数专用配置, 默认 false
  • forceZheng: 以输出结果加“整”(只要输出的结果没有到分位就加“整”), toMoney 函数专用配置, 默认 false
  • outSymbol: 输出金额前缀字符, toMoney 函数专用配置, 默认 true

new Nzh(langs) 自定义

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)

数字转中文

nzh.decode(zh_num,options)

中文转数字

nzh.toMoney(num,options)

数字转金额

参考资料

nzh's People

Contributors

calesvolchen avatar cnwhy avatar hcg1023 avatar imyon avatar mipawn avatar xadillax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nzh's Issues

0.003 == 零元整 0.5 == 五角整

const nzh = new Nzh({
ch: '零壹贰叁肆伍陆柒捌玖', // 数字字符
ch_u: '个拾佰仟万亿兆京', // 数位单位字符,万以下十进制,万以上万进制,个位不能省略
ch_f: '(负数)', // 负字符
ch_d: '点', // 小数点字符
m_u: '元角分', // 金额单位
m_t: '', // 金额前缀
m_z: '整' // 金额无小数后缀
})

// value如下
// 0.003 == 预期 零元整 目前 零元,望修复
// 0.5 == 预期 五角整 目前 五角,希望角位能支持带整

nzh.toMoney(value, { unOmitYuan: false, outSymbol: false })

从webpack3升级为webpack4后报错

version:1.0.4
1661768278968
1661768298474
代码如下:
let cn = require( '@/utils/nzh/nzh' )
(data.mu !== "0") && arr.unshift( cn.Nzh.cn.encodeS(data.mu )+'目');
(data.xiang !== "0") && arr.unshift( '第'+cn.Nzh.cn.encodeS( data.xiang )+'项');
(data.kuan !== "0") && arr.unshift( '第'+cn.Nzh.cn.encodeS( data.kuan )+'款');

汉字转回数字时会导致1e+...

const nzh = new Nzh({
    ch: '零一二三四五六七八九',
    ch_u: '个十百千万亿兆京垓姊穰沟涧正载极',
    ch_f: '负',
    ch_d: '点',
    m_u: '元角分厘',
    m_t: '人民币',
    m_z: '正'
});

此时nzh.decode("一极")返回1e+48

require引入问题

作者你好,
在uniapp开发中,使用vue2版本编译,var nzhcn = require("nzh/cn")正常,
使用vue3编译,报错:module 'pages/index/nzh/cn.js' is not defined, require args is 'nzh/cn'

看起来是路径问题,我改成相对路径依然还是报错,请问这个是哪里的问题呢。
前端小白一个,还请帮忙一下,谢谢

11-19数字转换不对

举例来说数字11转换成中文应该是十一,当前转换成的是一十一,觉得应该在没有百位的时候,都应该去掉这个十前面的一

request for ES Module support

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/me/repo/jiuzhang-lang/node_modules/nzh/cn' imported from /Users/me/repo/ng-lang/js-out/app.program.mjs
Did you mean to import nzh/cn.js?

对于零的识别问题

二零一八,会识别为218

PS:用〇也是一样的

是否对于口语化的识别不支持

“读数法”分级写零问题

又来打扰作者了。^_^
本来,不想说这个问题的。既然有人提了108080 壹拾万 后边应不应该加 零 ?,那我也说几句。

输入108080
输出壹拾万捌仟零捌拾元整
这里没毛病,使用读数法,不写零。

3、一个数末尾有0,不论有几个都可不读,分级后任一级末尾有零,也可不读,在需要读出时,不论有几个0,均只读一个零,中间有0的,也不论连续有几个0,需要读出时只读一个零

输入11000001000
输出壹佰壹拾亿零壹仟元整
这里就写零了。

建议作者,要么都写零,要么都不写零,要么用参数作为开关,自行控制。

我自己的实现,是不写零,输出壹佰壹拾亿壹仟元整。逛了下GitHub,例如Format-RMB,也是不写零。

这里关键点,就是涉及到了万位全零的处理,除此之外的情况,作者都是不写零的,都没啥问题。

107000 应该为 壹拾万零柒仟 还是壹拾万柒仟

107000 应该为
壹拾万零柒仟
壹拾万柒仟
我在各方查证 都说第一种是错误的
我使用nzh转换完毕是第一种
然后我试着从配置方面入手 搞成第二种 发现搞不定 是不是必须改源码了

九十九一

The expected result is nan.
but the actual results is 91.
I hope it's an illegal number

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.