js将阿拉伯数字转为中文数字(阿拉伯数字转为金额数字,包含大写中文数字)

在之前常用的金额数字的格式化方法 里边有金额数字的格式化,以及阿拉伯数字转为中文大写金额数字的方法,在一些使用中文小写数字的时候就不适用,这里将方法进行了扩展使用更加完善

代码直接放到下方,可以直接封装成一个numberToChineseUpper.js 文件,使用时直接引入到相应的地方
注意:该处理有包含 是否去除10~20的前缀,例如:一十改为十, 11转为 一十一改为 十一 这样的格式处理
注意注释部分内容

/*** 阿拉伯数字转换为中文数字(包含大写数字)* @param {Number} money 需要转换的数字* @param {Boolean} isUppercase 是否采用大写* @param {Boolean} isMoney 是否金额* @param {Boolean} isDeletePre 是否去除10~20的前缀,例如:一十改为十, 11转为 一十一改为 十一* @returns 汉字数字*/
const numberToChineseUpper = (money = 0, isUppercase = false, isMoney = false, isDeletePre = true) => {// 汉字的数字let cnNums = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']if (isUppercase) {cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']}// 基本单位let cnIntRadice = ['', '十', '百', '千']if (isUppercase) {cnIntRadice = ['', '拾', '佰', '仟']}// 对应整数部分扩展单位const cnIntUnits = ['', '万', '亿', '兆']// 对应小猪部分单位const cnDecUnits = ['角', '分', '毫', '厘']// 整数金额时后面跟的字符const cnInteger = '整'// 整数结束时的单位const cnIntLast = '圆'// 最大处理的数字, 纯数字可能失去精度问题,用字符串const maxNum = '99999999999999.9999'// 金额整数部分let integerNum// 金额小数部分let decimaNUm// 输出的中文金额字符串let chineseStr = ''// 分离金额后用的数组,预定义let partsif (money === '') {return ''}money = parseFloat(money)if (money >= Number(maxNum)) {// 超出最大处理数字return '超出最大处理数字'}if (money === 0) {if (isMoney) {chineseStr = cnNums[0] + cnIntLast + cnInteger} else {chineseStr = cnNums[0]}return chineseStr}// 转换为字符串money = money.toString()if (money.indexOf('.') === -1) {integerNum = moneydecimaNUm = ''} else {parts = money.split('.')integerNum = parts[0]// 小数点后最多取4decimaNUm = parts[1].substr(0, 4)}// 获取整型部分if (parseInt(integerNum, 10) > 0) {let zeroCount = 0for (let i = 0; i < integerNum.length; i++) {const n = integerNum.substr(i, 1)const p = integerNum.length - i - 1const q = p / 4const m = p % 4if (n === '0') {zeroCount++} else {if (zeroCount > 0) {chineseStr += cnNums[0]}// 归零zeroCount = 0chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]}if (m === 0 && zeroCount < 4) {chineseStr += cnIntUnits[q]}}if (isMoney) {chineseStr += cnIntLast}}// 小数部分if (decimaNUm !== '') {for (let i = 0; i < decimaNUm.length; i++) {const n = decimaNUm.substr(i, 1)if (n !== '0') {if (isMoney) {chineseStr += cnNums[Number(n)] + cnDecUnits[i]} else {chineseStr += cnNums[Number(n)]}}}}if (chineseStr === '') {if (isMoney) {chineseStr += cnNums[0] + cnIntLast + cnInteger} else {chineseStr += cnNums[0]}} else if (decimaNUm === '') {if (isMoney) {chineseStr += cnInteger}}// 10~20之间数字特殊处理,例如:一十改为十, 11转为 一十一改为 十一if (isDeletePre && money >= 10 && money < 20) {return chineseStr.replace(/^(一|壹)/, '')}return chineseStr
}
export default numberToChineseUpper

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/862371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】自然语言处理的新前沿:GPT-4与Data Analysis

目录 1、生成二维码Prompt&#xff1a;请用二维码编码这个信息&#xff0c;我爱chatgpt2、分析PDFPrompt&#xff1a;请分析这篇pdf的主要内容&#xff0c;用中文输出分析结果&#xff0c;100字3、设计网站Prompt&#xff1a;请帮我设计一个网站&#xff0c;网站的主题是哪吒玩…

分享10个AI搞钱副业,门槛低,普通人也能学的会!易上手!

前言 本期给大家分享的是利用AI 做副业的一些方法&#xff0c;大家可以挑选适合自己的赛道去搞钱 现在是人工智能时代&#xff0c;利用好AI 工具&#xff0c;可以降低普通人做副业的门槛&#xff0c;同时也能提高工作效率&#xff0c; 因此AI 赚钱的副业还是挺多的&#xff0…

测量无人船作业流程是怎样的?

在一些特殊水域测量作业中&#xff0c;使用有人船进行测量时受阻较多&#xff0c;而采用无人测量船则效率就非常高了&#xff0c;它是解决复杂水域测量问题最直接最有效的方式。那么&#xff0c;测量无人船作业流程是怎样的&#xff1f;下面就让小编来为大家简单介绍一下&#…

代码随想录算法训练营Day52|647.回文子串、516.最长回文子序列

回文子串 647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 暴力解法 遍历字符串中的所有子串&#xff0c;并判断是否为回文串&#xff0c;若为回文串&#xff0c;则要返回的结果1&#xff0c;最后返回所要求的结果&#xff0c;神奇的事居然能过&#xff0c;虽然时间和…

Java SE入门及基础(57) Java常用API 日期时间

目录 日期时间 1. Date 类 常用方法 示例 思考&#xff1a; 2. SimpleDateFormat 类 常用方法 常用日期格式 示例 3. Calendar 类 常用静态字段 常用方法 示例 日期时间 1. Date 类 常用方法 public Date (); // 无参构造&#xff0c;表示计算机系统当前时间…

PFA样品瓶带氟树脂接头试剂瓶可定制接1/4英寸管300ml

PFA带接头试剂瓶&#xff0c;也称作特氟龙洗气瓶&#xff0c;材质有PFA(可溶性聚四氟乙烯)和FEP(聚全氟乙丙烯)&#xff0c;市场上一般问的聚四氟乙洗气瓶就是PFA洗气瓶&#xff0c;造型上有是2个管子接入瓶内&#xff0c;长进短出&#xff0c;带有四氟滤球&#xff0c;管子尺寸…

手持小风扇哪个牌子比较好?五大热门手持小风扇品牌推荐

炎炎夏日&#xff0c;真的需要一款随身小风扇来拯救我们的高温困境&#xff01;不过&#xff0c;市面上的选择太多了&#xff0c;真的让人眼花缭乱。今天&#xff0c;我就给大家快速推荐五款热门的手持小风扇&#xff0c;它们不仅轻便易携&#xff0c;而且各有特色。有的是风力…

根据个人情况选择院校和专业的10大建议收藏

选择院校和专业是一个重要的决定&#xff0c;需要综合考虑个人情况、兴趣、职业规划以及家庭背景等多方面因素。这个口诀提供了一个简单的框架&#xff0c;但每个人的情况都是独特的&#xff0c;最终的选择应该基于个人的全面考虑。 家里有钱&#xff0c;学校优先&#xff1a;…

下穿隧道结构安全该如何保证,检测跟自动化监测该如何抉择

隧道监测背景&#xff1a; 隧道所处的地下环境较为复杂&#xff0c;易受地质条件恶化、结构损伤、退化失稳以及自然灾害等因素影响&#xff0c;引发隧道拱顶开裂、边墙开裂、衬砌损坏、隧道渗漏水、围岩大变形等病害&#xff0c;从而导致隧道安全事故发生&#xff0c;尤其在长期…

Flat Ads:拥抱 CTV,品牌增长新动力

近年来,CTV(联网电视)在数字营销界正迅速崛起,成为最受青睐和增长迅猛的推广形式之一。 随着更多联网设备的普及,越来越多观众正在从传统电视快速转移到流媒体环境,对传统电视广告取而代之的便是 CTV 广告。据 eMarketer 数据显示,未来四年,CTV 市值将从今年的 250 亿美元增长到…

JupyterServer配置

1. 安装jupyter ​pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple --default-timeout1000 2. 生成配置 jupyter notebook --generate-config 3. 修改配置&#xff0c;设置密码 获取密码的方式&#xff1a;命令行输入python后&#xff0c;用以下方式获…

大疆车载的第一款油车智驾:上汽大众途观L Pro的智能辅助驾驶系统

引言 在自驾行业中&#xff0c;有一个低调但迅速崭露头角的选手——大疆车载。自2016年成立以来&#xff0c;大疆车载&#xff08;现已更名为卓御&#xff09;通过其先进的智能驾驶技术&#xff0c;逐渐在市场上赢得了声誉。此次&#xff0c;上汽大众途观L Pro成为大疆车载首款…

一文带你彻底搞懂设计模式之单例模式!!由浅入深,图文并茂,超超超详细的单例模式讲解!!

一文带你彻底搞懂设计模式之单例模式&#xff01; 一、什么是单例模式&#xff1f;单例模式分类饿汉式创建单例对象懒汉式创建单例对象 多问一个为什么&#xff1f; 二、为什么要有单例模式&#xff1f;使用单例模式的原因单例模式的应用场景 三、多线程下的单例模式饿汉式懒汉…

liunx各种版本配置静态网卡

文章目录 @[toc]一、centos二、 ubuntu20.04三、统信四、欧拉五、麒麟一、centos #系统版本 [root@localhost ~]# cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID=&quo…

鸿蒙:自定义组件、自定义函数、自定义样式

一、自定义组件 1.新建组件文件夹&#xff0c;新建自定义组件文件 . 2.编辑自定义组件&#xff0c;并通过 Component //声明组件 export struct PageHeader { //结构体private title: stringbuild() { //uiRow() {Image($rawfile(左返回.png)).width(15%)Text(this.title)…

Docker 安装最新版本 Jenkins

目录 1、下载、启动容器、更新到最新版本 2、查看初始密码两种方式&#xff1a; 3、默认安装的部分未汉化&#xff0c;删除默认的汉化插件。重启容器&#xff0c;重新安装汉化插件 4、安装 Publish over SSH、docker-build-step 、Docker Commons 插件 5、配置服务器连接信…

AWS EKS上GPU工作负载自动扩缩容的异常排查指南

在AWS EKS上使用Karpenter和KEDA实现GPU工作负载的自动扩缩容是一个复杂的过程,涉及多个组件的协同工作。当遇到问题时,系统性的排查方法可以帮助我们快速定位和解决问题。本文将详细介绍如何对这个系统进行全面的异常排查。 1. Karpenter相关组件检查 1.1 NodePool检查 N…

图论·多源最短路径Floyddijsktra

例题地址 多源最短路径 多个源点多个终点可以使用Floyd算法直接求各源点到终点的最短距离&#xff0c;也可以直接多次使用dijsktra算法求单源点到终点的最短距离 Floyd算法 使用条件 多源最短路径权值正负皆可 核心思想&#xff1a;动态规划 子问题&#xff1a; 设(A,B)…

前端学习 Vue 插槽如何实现组件内容分发?

目录 一、Vue.js框架介绍二、什么是Vue 插槽三、Vue 插槽的应用场景四、Vue 插槽如何实现组件内容分发 一、Vue.js框架介绍 Vue.js是一个用于构建用户界面的渐进式JavaScript框架。它设计得非常灵活&#xff0c;可以轻松地被集成到现有的项目中&#xff0c;也可以作为一个完整…

Vitis Accelerated Libraries 学习笔记--OpenCV 运行测试

目录 1. 简介 2. 实例测试 2.1 实例介绍 2.2 创建工程 2.2.1 创建工程 2.2.2 获取路径 2.2.3 设置路径 2.2.4 打开工程 2.2.5 添加文件 2.2.6 启动 GUI 2.2.7 配置 csim 参数 3 常见错误 3.1 核心共享库报错 4. 总结 1. 简介 在《Vitis Accelerated Libraries …