数字转换中文大写
<template>
<div>
<el-input v-model="input" placeholder="请输入内容" @input="inputTit"></el-input>
<span>{{ bigNum }}</span>
</div>
</template>
<script>
export default {
name: 'BigNum',
data() {
return {
input: '',
bigNum: ''
}
},
mounted() {},
methods: {
inputTit(val) {
if (!val) {
this.bigNum = ''
return
}
// 常量:
var MAXIMUM_NUMBER = 99999999999.99;
// 预定义输出的基数字符和货币符号:
var CN_ZERO = '零'
var CN_ONE = '壹'
var CN_TWO = '贰'
var CN_THREE = '叁'
var CN_FOUR = '肆'
var CN_FIVE = '伍'
var CN_SIX = '陆'
var CN_SEVEN = '柒'
var CN_EIGHT = '捌'
var CN_NINE = '玖'
var CN_TEN = '拾'
var CN_HUNDRED = '佰'
var CN_THOUSAND = '仟'
var CN_TEN_THOUSAND = '万'
var CN_HUNDRED_MILLION = '亿'
var CN_SYMBOL = '人民币'
var CN_DOLLAR = '元'
var CN_TEN_CENT = '角'
var CN_CENT = '分'
var CN_INTEGER = '整'
// 变量:
var integral // 表示数字的整数部分.
var decimal // 表示数字的小数部分.
var outputCharacters // 输出结果.
var parts
var digits, radices, bigRadices, decimals
var zeroCount
var i, p, d
var quotient, modulus
// 验证输入字符串:
val = val.toString()
if (val == '') {
return ''
}
if (val.match(/[^,.\d]/) != null) {
return ''
}
if ((val).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) {
return ''
}
// 规范化输入数字的格式:
val = val.replace(/,/g, '') // 删除逗号分隔符.
val = val.replace(/^0+/, '') // 在开始处修剪零.
// 断言数字不大于最大值.
if (Number(val) > MAXIMUM_NUMBER) {
return ''
}
// 处理货币数字到字符的转换:
// 在处理转换之前,分离整数和小数部分:
parts = val.split('.')
if (parts.length > 1) {
integral = parts[0]
decimal = parts[1]
// 减少第二个后面多余的十进制数字.
decimal = decimal.substr(0, 2)
}
else {
integral = parts[0]
decimal = ''
}
// 准备与数字对应的字符:
digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE)
radices = new Array('', CN_TEN, CN_HUNDRED, CN_THOUSAND)
bigRadices = new Array('', CN_TEN_THOUSAND, CN_HUNDRED_MILLION)
decimals = new Array(CN_TEN_CENT, CN_CENT)
// 开始处理:
outputCharacters = ''
// 大于0的过程积分部分:
if (Number(integral) > 0) {
zeroCount = 0
for (i = 0; i < integral.length; i++) {
p = integral.length - i - 1
d = integral.substr(i, 1)
quotient = p / 4
modulus = p % 4
if (d == '0') {
zeroCount++
}
else {
if (zeroCount > 0) {
outputCharacters += digits[0]
}
zeroCount = 0
outputCharacters += digits[Number(d)] + radices[modulus]
}
if (modulus == 0 && zeroCount < 4) {
outputCharacters += bigRadices[quotient]
zeroCount = 0
}
}
outputCharacters += CN_DOLLAR
}
// 处理小数部分(如果有):
if (decimal != '') {
for (i = 0; i < decimal.length; i++) {
d = decimal.substr(i, 1)
if (d != '0') {
outputCharacters += digits[Number(d)] + decimals[i]
}
}
}
// 确认并返回最终输出字符串:
if (outputCharacters == '') {
outputCharacters = CN_ZERO + CN_DOLLAR
}
if (decimal == '') {
outputCharacters += CN_INTEGER
}
outputCharacters = CN_SYMBOL + outputCharacters
this.bigNum = outputCharacters
return this.bigNum
}
}
}
</script>
本文参考某位博主但是忘记原文地址了,如有发现请私信本人删除或添加原文地址