当前位置: 首页 > news >正文

Vue JavaScript 小写数字金额转换成大写汉字(附编程思路)

一、编程思路(本案例只考虑9999万亿以内的数字转换,相信这个金额对于人民币来说已经足够庞大了,超过此数值的金额不保证转换汉字的准确性,且最多精确到小数点后四位):
        1、将示例(不管是数字还是字符串)统一转换成字符串 A
        2、将字符串 A 按照小数点切割成数组 B
        3、取数组 B 的整数部分,将每一个数字转换成大写汉字,并加上单位“個、拾、佰、仟”,其中“個”不用显示,用空字符替代,第5位额外加“萬”这个单位,第9位额外加“亿”,由此得到完整的整数部分大写汉字字符串 C
        4、取数组 B 的小数部分,将每一个数字转换成大写汉字,并加上单位“角、分、毫、厘”,由此得到完整的小数部分大写汉字字符串 D
        5、将字符串 C 拼接上一个“圆”,再拼接上字符串 D 得到完整的全部数字的大写汉字字符串 F
        6、将字符串 F 中的零角、零分、零毫、零厘全部替换成空字符串,得到字符串 G
        7、将字符串 G 中的零仟、零佰、零拾全部替换成零,得到字符串 H
        8、将字符串 H 中的2个及以上连续的零全部替换成单个零,得到字符串 K
        9、还有一些转换或替换,详见下方代码示例
        10、最终得到我们需要的大写汉字金额

二、编程示例: 

export const numToChinessCap = (numStr) => {console.log("numStr = " + numStr);const regex = /^\d+(\.\d+)?$/;if (!regex.test(numStr)) {// console.log("不是有效的整数或小数");return "";}if (numStr.startsWith(".")) {// console.log("不是有效的整数或小数");return "";}if (numStr.endsWith(".")) {// console.log("不是有效的整数或小数");return "";}if (numStr.length > 1 && numStr.startsWith("0") && !numStr.startsWith("0.")) {// console.log("不是有效的整数或小数");return "";}const nums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];const integerUtits = ['', '拾', '佰', '仟'];let parts = numStr.split('.');if (parts.length != 1 && parts.length != 2) {// console.log("不是有效的整数或小数");return "";}let integerPart = parts[0];let chineseInteger = '';let chineseIntegerArray = [];let integerIndex = 0;for (let i = integerPart.length - 1; i >= 0; i--) {// 从后往前依次拿到单个数字let singleNum = integerPart[i];// 单个数字转换成中文大写汉字let chinessCapNum = nums[singleNum];// 该数字后面应该接的单位:個、拾、佰、仟(其中‘個’这个单位就省略掉了,不需要展示,用空字符串替代)let integerUtit = integerUtits[integerIndex % 4];// 该数字后面应该额外接的单位:萬或者亿,第5位开始加萬,第9位开始加亿,再往后每四位切换使用萬和亿let integerExtUtit = '';if (integerIndex != 0) {if (integerIndex % 8 == 0) {integerExtUtit = '亿';} else if (integerIndex % 4 == 0) {integerExtUtit = '萬';}} chineseIntegerArray[integerIndex] =  chinessCapNum + integerUtit + integerExtUtit;integerIndex++;}// console.log("chineseIntegerArray = ", chineseIntegerArray);for (let i = chineseIntegerArray.length - 1; i >= 0; i--) {chineseInteger += chineseIntegerArray[i];}// console.log("整数部分转大写汉字后的结果 = " + chineseInteger);let chineseDecimal = '';//判断有没有小数,如果有,则需要对小数部分做处理if (parts.length == 2) {const decimalUnits = ['角', '分', '毫', '厘'];let decimalPart = parts[1];let valildCount = decimalPart.length > 4 ? 4 : decimalPart.length;for (let i = 0; i < valildCount; i++) {chineseDecimal += nums[decimalPart[i]] + decimalUnits[i];}// console.log("小数部分转大写汉字后的结果 = " + chineseDecimal);}let fullChinessCap = chineseInteger + '圆' + chineseDecimal;// console.log("完整大写汉字 = " + fullChinessCap);let replacedChinessCap = fullChinessCap.replace(/零[角分毫厘]/g, '');// console.log("replacedChinessCap 1 = " + replacedChinessCap);replacedChinessCap = replacedChinessCap.replace(/零[仟佰拾]/g, '零');// console.log("replacedChinessCap 2 = " + replacedChinessCap);replacedChinessCap = replacedChinessCap.replace(/零+/g, '零');// console.log("replacedChinessCap 3 = " + replacedChinessCap);replacedChinessCap = replacedChinessCap.replace(/零萬/g, '萬');// console.log("replacedChinessCap 4 = " + replacedChinessCap);replacedChinessCap = replacedChinessCap.replace(/零亿/g, '亿');// console.log("replacedChinessCap 5 = " + replacedChinessCap);replacedChinessCap = replacedChinessCap.replace(/萬萬/g, '亿');// console.log("replacedChinessCap 6 = " + replacedChinessCap);replacedChinessCap = replacedChinessCap.replace(/零圆/g, '圆');// console.log("replacedChinessCap 7 = " + replacedChinessCap);replacedChinessCap = replacedChinessCap.replace(/亿萬/g, '亿');// console.log("replacedChinessCap 8 = " + replacedChinessCap);if (replacedChinessCap.startsWith("零圆")) {replacedChinessCap = replacedChinessCap.replace(/零圆/, '');}if (replacedChinessCap.startsWith("圆")) {replacedChinessCap = replacedChinessCap.replace(/圆/, '');}if (!replacedChinessCap || replacedChinessCap.length == 0) {replacedChinessCap = "零圆";}return replacedChinessCap;
}

三、用法示例及运行结果

console.log(numToChinessCap("0.0201"));
// 贰分壹厘
console.log(numToChinessCap("123456789.010305"));
// 壹亿贰仟叁佰肆拾伍萬陆仟柒佰捌拾玖圆壹分叁厘
console.log(numToChinessCap("9099000000000000.220589"));
// 玖仟零玖拾玖萬亿圆贰角贰分伍厘
console.log(numToChinessCap("8061560189050150.0008"));
// 捌仟零陆拾壹萬伍仟陆佰零壹亿捌仟玖佰零伍萬零壹佰伍拾圆捌厘
console.log(numToChinessCap("100.0005"));
// 壹佰圆伍厘
console.log(numToChinessCap("0.0"));
// 零圆
console.log(numToChinessCap("0.002"));
// 贰毫
console.log(numToChinessCap("20000000.000"));
// 贰仟萬圆

相关文章:

Vue JavaScript 小写数字金额转换成大写汉字(附编程思路)

一、编程思路&#xff08;本案例只考虑9999万亿以内的数字转换&#xff0c;相信这个金额对于人民币来说已经足够庞大了&#xff0c;超过此数值的金额不保证转换汉字的准确性&#xff0c;且最多精确到小数点后四位&#xff09;&#xff1a; 1、将示例&#xff08;不管是…...

【自动化测试】—— Appium安装配置保姆教程(图文详解)

目录 一. 环境准备 二. JDK安装 1. 下载JDK 2. 安装JDK 3. 配置环境 4. 验证安装 三. Android SDK安装 1. 下载Android SDK 2. 安装Android SDK 3. 安装工具 4. 配置环境 5. 验证安装 四. NodeJS安装 1. 下载NodeJS 2. 安装NodeJS 3. 验证安装 4. 安装淘宝镜像…...

贪心算法详细讲解(沉淀中)

文章目录 1. 什么是贪心算法&#xff1f;&#xff08;贪婪鼠目寸光&#xff09;经典例题1.1.1 找零问题1.1.2最小路径和1.1.3 背包问题 2.贪心算法的特点2.1 证明例1 3.学习贪心的方向心得体会 1. 什么是贪心算法&#xff1f;&#xff08;贪婪鼠目寸光&#xff09; 贪心策略&a…...

RabbitMQ中有哪几种交换机类型?

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ中有哪几种交换机类型&#xff1f;】面试题。希望对大家有帮助&#xff1b; RabbitMQ中有哪几种交换机类型&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在RabbitMQ中&#xff0c;交换机&#xf…...

STM32特殊功能引脚详解文章·STM32特殊功能引脚能当作GPIO使用嘛详解!!!

目录 STM32特殊功能引脚 使用STM32特殊功能引脚函数 禁止搬运&#xff0c;仅供学习&#xff0c;编写不易&#xff0c;感谢理解&#xff01;&#xff01;&#xff01; STM32特殊功能引脚 本篇详解文章仅以STM32F103C8T6芯片来讲解&#xff0c;STM32芯片除了普通的GPIO引脚以外…...

Qt QComboBox的QSS美化

美化效果 QSS设置 /*QComboBox风格设置*/ QComboBox#comboBox_1 { border:2px solid #f3f3f3;/*设置边框线宽*/ background-color:rgb(237, 242, 255);/*背景颜色*/ border-radius:5px;/*圆角*/ padding: 1px 2px 1px 2px;/*针对组合框中的文本内容*/ min-width:2em;/*组合框…...

计算机视觉算法实战——实时车辆检测和分类(主页有相关源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​​​​​​​​​​​​​​​​ 1. 领域介绍✨✨ 实时车辆检测和分类是计算机视觉中的一个重要应用领域&#xff0c;旨在从视频流或…...

what?ngify 比 axios 更好用,更强大?

文章目录 前言一、什么是ngify&#xff1f;二、npm安装三、发起请求3.1 获取 JSON 数据3.2 获取其他类型的数据3.3 改变服务器状态3.4 设置 URL 参数3.5 设置请求标头3.6 与服务器响应事件交互3.7 接收原始进度事件3.8 处理请求失败3.9 Http Observables 四、更换 HTTP 请求实现…...

安装虚拟机VMware遇到的问题

问题1&#xff1a;进入如下界面&#xff0c;不知道如何操作 解决办法 键盘⬇️&#xff0c;选择“Reset the system”回车 问题2&#xff1a;系统存放位置我给放在了VMware安装目录&#xff0c;具体D:\software\VMware\Windows安装不行 解决办法&#xff1a;D:\software\virt…...

通过ESP32和INMP441麦克风模块实现音频数据传递

在现代物联网&#xff08;IoT&#xff09;项目中&#xff0c;音频数据的采集与传输成为了一个热门的应用领域。通过结合ESP32开发板和INMP441麦克风模块&#xff0c;我们可以实现一个低成本、高效率的音频数据传输系统。本文将详细介绍如何使用这两种硬件组件来构建和测试音频传…...

Vue中nextTick实现原理

源码实现思路&#xff08;面试高分回答&#xff09; 面试官问我 Vue 的 nextTick 原理是怎么实现的&#xff0c;我这样回答&#xff1a; 在调用 this.$nextTick(cb) 之前&#xff1a; 存在一个 callbacks 数组&#xff0c;用于存放所有的 cb 回调函数。存在一个 flushCallbac…...

数据仓库基础常见面试题

1.数据仓库是什么 ‌数据仓库&#xff08;Data Warehouse&#xff09;是一个面向主题的、集成的、非易失的、随时间变化的数据集合&#xff0c;用于支持企业的管理决策‌。它不同于传统的操作型数据库&#xff0c;后者主要用于处理日常业务交易和实时查询&#xff0c;而数据仓库…...

Java设计模式——单例模式(特性、各种实现、懒汉式、饿汉式、内部类实现、枚举方式、双重校验+锁)

文章目录 单例模式1️⃣特性&#x1f4aa;单例模式的类型与实现&#xff1a;类型懒汉式实现(线程不安全)懒汉式实现(线程安全&#xff09;双重锁校验懒汉式(线程安全)饿汉式实现(线程安全)使用类的内部类实现⭐枚举方式实现单例&#xff08;推荐&#xff09;&#x1f44d; 单例…...

数字普惠金融对新质生产力的影响研究(2015-2023年)

基于2015—2023年中国制造业上市公司数据&#xff0c;探讨了数字普惠金融对制造业企业新质生产力的影响及作用机理。研究发现&#xff0c;数字普惠金融有助于促进制造业企业新质生产力的发展&#xff0c;尤其是在数字普惠金融的使用深度较大的情况下&#xff0c;其对新质生产力…...

国产编辑器EverEdit - 扩展脚本:新建同类型文件(避免编程学习者反复新建保存练习文件)

1 扩展脚本&#xff1a;在当前文件目录下新建同类型文件 1.1 应用场景 用户在进行编程语言学习时&#xff0c;比如&#xff1a;Python&#xff0c;经常做完一个小练习后&#xff0c;又需要新建一个文件&#xff0c;在新建文件的时候&#xff0c;不但要选择文件类型&#xff0c…...

jupyter notebook练手项目:线性回归——学习时间与成绩的关系

线性回归——学习时间与学习成绩的关系 第1步&#xff1a;导入工具库 pandas——数据分析库&#xff0c;提供了数据结构&#xff08;如DataFrame和Series&#xff09;和数据操作方法&#xff0c;方便对数据集进行读取、清洗、转换等操作。 matplotlib——绘图库&#xff0c;p…...

dockerfile2.0

dockerfile实现lnmp nginx centos7 mysql centos7 php centos7 自定义镜像来实现整个架构 cd /opt mkdir nginx mysql php cd nginx 拖入nginx和wordpress vim Dockerfile vim nginx.conf ↓ worker_processes 1; events {worker_connections 1024; } http {include …...

【spring mvc】文件上传、下载

文件上传&#xff0c;存储至本地目录中 一、代码1、工具类&#xff08;敏感后缀过滤&#xff09;2、文件上传&#xff0c;存储至本地3、文件下载 二、效果演示1、上传1.1、postMan 请求1.2、上传效果 2、下载2.1、下载效果 一、代码 1、工具类&#xff08;敏感后缀过滤&#x…...

FPGA工程师成长四阶段

朋友&#xff0c;你有入行三年、五年、十年的职业规划吗&#xff1f;你知道你所做的岗位未来该如何成长吗&#xff1f; FPGA行业的发展近几年是蓬勃发展&#xff0c;有越来越多的人才想要或已经踏进了FPGA行业的大门。很多同学在入行FPGA之前&#xff0c;都会抱着满腹对职业发…...

java fastjson2 解析JSON用法解析

Fastjson2 是 Fastjson 的升级版本&#xff0c;提供了更好的性能和扩展性&#xff0c;同时也在 API 和功能上做了很多改进。使用 Fastjson2 解析 JSON 数据非常简单&#xff0c;支持多种方式来解析 JSON 字符串、嵌套 JSON 对象和数组、以及转换成 Java 对象。下面详细介绍 Fas…...

别再乱用分支了!Flowable四种网关(排他/并行/包容/事件)实战选型指南

Flowable四大网关实战选型&#xff1a;从混乱到精准的决策艺术当你在设计一个请假审批流程时&#xff0c;是否遇到过这样的困惑&#xff1a;部门经理审批后需要同时通知HR和财务&#xff0c;但某些特殊情况下又需要跳过财务直接归档&#xff1f;这种看似简单的业务需求&#xf…...

告别沉浸式白屏!UniApp中iOS/Android底部安全区与顶部状态栏颜色自定义全攻略

告别沉浸式白屏&#xff01;UniApp中iOS/Android底部安全区与顶部状态栏颜色自定义全攻略当开发者尝试在UniApp中实现沉浸式设计时&#xff0c;往往会遇到一个令人头疼的问题——默认的白色安全区和状态栏导致界面元素&#xff08;如电池图标、信号强度&#xff09;几乎不可见。…...

从‘文件夹’到对象列表:手把手教你用MinIO Java Client实现灵活的文件查询与过滤

从‘文件夹’到对象列表&#xff1a;手把手教你用MinIO Java Client实现灵活的文件查询与过滤在当今数据驱动的时代&#xff0c;对象存储已成为现代应用架构中不可或缺的一部分。MinIO作为高性能、兼容S3协议的开源对象存储解决方案&#xff0c;凭借其轻量级和易用性赢得了众多…...

Hitboxer:开源SOCD清理工具,3分钟提升游戏操作精准度

Hitboxer&#xff1a;开源SOCD清理工具&#xff0c;3分钟提升游戏操作精准度 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否在激烈的游戏对抗中经历过这样的挫败&#xff1a;同时按下左右方向键时角色卡…...

2605.VGGT-Omega 论文解读: 3D重建的Scaling Law, Register Attention效率革命 | Oxford+Meta CVPR26 Oral

VGGT-Omega: Scaling Feed-Forward 3D Reconstruction Jianyuan Wang, Minghao Chen, Shangzhan Zhang, Nikita Karaev, Johannes Schonberger, et al. Visual Geometry Group, Oxford Meta AI | CVPR 2026 Oral | arXiv 2605.15195 Paper | Project Page 一句话总结 VGGT-Om…...

腾讯 Marvis 初级使用教程——从安装到上手

腾讯最新系统级AI助手Marvis&#xff08;2026年5月20日发布&#xff09;&#xff0c;官网 https://marvis.qq.com&#xff0c;主打“一句话操作电脑”、跨端协同、GUI Agent执行。虽然是个【小龙虾】&#xff0c;但上手其实不难。这篇就简单写写 Marvis 的安装和基础使用&#…...

为Claude Code配置稳定API源并解决访问限制

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为Claude Code配置稳定API源并解决访问限制 Claude Code 作为一款强大的 AI 编程辅助工具&#xff0c;其原生服务在某些情况下可能…...

企业内统一API网关与Taotoken聚合平台对接方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业内统一API网关与Taotoken聚合平台对接方案 在推进AI应用落地的过程中&#xff0c;许多中大型企业面临一个共同挑战&#xff1a…...

HoRain云--CLAUDE.md 使用指南

&#x1f3ac; HoRain云小助手&#xff1a;个人主页 &#x1f525; 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;…...

render_async嵌套渲染:构建复杂异步界面的完整解决方案

render_async嵌套渲染&#xff1a;构建复杂异步界面的完整解决方案 【免费下载链接】render_async render_async lets you include pages asynchronously with AJAX 项目地址: https://gitcode.com/gh_mirrors/re/render_async 在现代Web开发中&#xff0c;页面加载速度…...