当前位置:网站首页>js中把数字转换成汉字输出
js中把数字转换成汉字输出
2022-07-01 00:39:00 【coldriversnow】
前言:
在js中把数字转换成汉字输出的方法,直接可以拿来用
方法一:支持7位,也就是最大1234567
案例:this.toChinesNum(10101010) 得到 "一千零一十万一千零一十"
/**
* 数字转成汉字
* @params num === 要转换的数字
* @return 汉字
* */
toChinesNum(num) {
let changeNum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
let unit = ['', '十', '百', '千', '万']
num = parseInt(num)
let getWan = (temp) => {
let strArr = temp.toString().split('').reverse()
let newNum = ''
let newArr = []
strArr.forEach((item, index) => {
newArr.unshift(item === '0' ? changeNum[item] : changeNum[item] + unit[index])
})
let numArr = []
newArr.forEach((m, n) => {
if (m !== '零') numArr.push(n)
})
if (newArr.length > 1) {
newArr.forEach((m, n) => {
if (newArr[newArr.length - 1] === '零') {
if (n <= numArr[numArr.length - 1]) {
newNum += m
}
} else {
newNum += m
}
})
} else {
newNum = newArr[0]
}
return newNum
}
let overWan = Math.floor(num / 10000)
let noWan = num % 10000
if (noWan.toString().length < 4) {
noWan = '0' + noWan
}
return overWan ? getWan(overWan) + '万' + getWan(noWan) : getWan(num)
}调用: let a = this.toChinesNum(1) 这里的a拿到的值就是一
方法二:支持9位以上也就是亿级别的,如果需要钱的那种单位,把注释放开就行
toChineseBig(num) {
// 将接收到的num转换为字符串
var strNum = String(num)
// 定义单位
// var unit = ['拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟']
var unit = ['十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千']
// 结果中放一个符号,用来解决最后的零去不掉的问题
var result = ['@']
// 单位下标
var unitNo = 0
// 从后往前遍历接收到的数据,省略结束条件
for (let i = strNum.length - 1;; i--) {
// 调用转大写函数,将每一个数字转换成中文大写,一次放入一个到结果数组中
result.unshift(numToChinese(strNum[i]))
// 如果不大于0
if (i <= 0) {
// 结束循环
break
}
// 放入一个数字,放入一个单位
result.unshift(unit[unitNo])
// 单位下标加1
unitNo++
}
// 将结果数组转换成字符串,并使用正则替换一些关键位置,让结果符合语法
// return result.join('').replace(/(零[仟佰拾]){1,3}/g, '零').replace(/零{2,}/g, '零').replace(/零([万亿])/g, '$1').replace(/亿万/g, '亿').replace(/零*@/g, '')
return result.join('').replace(/(零[千百十]){1,3}/g, '零').replace(/零{2,}/g, '零').replace(/零([万亿])/g, '$1').replace(/亿万/g, '亿').replace(/零*@/g, '')
function numToChinese(n) {
// var chineseBigNum = '零壹贰叁肆伍陆柒捌玖'
var chineseBigNum = '零一二三四五六七八九'
return chineseBigNum[n]
}
}
}调用: let a = this.toChineseBig(112345111111) 这里的a拿到的值就是 一千一百二十三亿四千五百一十一万一千一百一十一
边栏推荐
- New content violation degree determination scana bad information monitoring capability update issue 5
- Double linked list: initialize insert delete traversal
- Cmu15445 (fall 2019) project 1 - buffer pool details
- HDU 2488 A Knight's Journey(DFS)
- 二十多年来第一次!CVPR最佳学生论文授予中国高校学生!
- 深度学习的历史
- Oracle-数据完整性
- CMU15445 (Fall 2019) 之 Project#1 - Buffer Pool 详解
- Web interface testing of software testing
- Can JDBC based on openjdk connect to MySQL?
猜你喜欢

第53章 从业务逻辑实现角度整体性理解程序

剑指 Offer 19. 正则表达式匹配

Pytorch installs and uses GPU acceleration

Chapter 53 overall understanding of procedures from the perspective of business logic implementation

【原创】 PLSQL 索引排序优化

fluttertoast

酒旅板块复苏,亚朵继续上市梦,距离“新住宿经济第一股“还有多远?

Oracle-表的创建与管理

Docsify building a personal minimalist knowledge warehouse

Stack frame
随机推荐
History of deep learning
魔王冷饭||#101 魔王解惑数量多与质量;员工管理;高考志愿填报;游戏架构设计
Get to know the drawing component of flutter - custompaint
C language file operation for conquering C language
2022 is half way through. It's hard to make money
K210工地安全帽
ArrayList analysis 1-cycle, capacity expansion, version
CMU15445 (Fall 2019) 之 Project#1 - Buffer Pool 详解
P4学习——p4runtime
Oracle data integrity
连表查询 select 生成
获取屏幕高度
Flutter Error: Cannot run with sound null safety, because the following dependencies don‘t support
给按钮的边框和文字设置不同的背景色
解析创客教育实践中的智慧原理
深度学习的历史
Double linked list: initialize insert delete traversal
Cmu15445 (fall 2019) project 1 - buffer pool details
实验八 T-sql,存储过程
双链表:初始化 插入 删除 遍历