javascript实现在线金额转人民币大写代码

对于金额大写的特殊需求在金融以及一些特定的机构中可以说是非常常见的一个功能需求,那么在程序和生活中我们如何将金额转换成人民币大写书写格式呢?

本文介绍两种转换方式:在线工具和js代码处理

一、在线金额转换工具

    本站提供在线金额转换工具,若无固定需求可到工具中使用。《在线金额转大写工具


二、通过js代码实现
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
function changeDataFun(inp){
let _this = this
let exp = /^[+-]?\d*(\.\d*)?(e[+-]?\d+)?$/;
if(!inp){
return;
}
if(!exp.test(inp)){
alert('输入阿拉伯数字')
return;
}
if(inp<10000000000 && inp>-10000000000){
console.log(digitUppercase(inp))
}else{
alert('数字过大,无法计算')
}
}
function digitUppercase(n) {
var fraction =['角','分'];
var digit =[ '零','壹', '贰','叁', '肆','伍','陆','柒','捌', '玖'];
var unit =[
['圆','万','亿'],
['','拾','佰','仟']
];
var head =n <0 ? '负' :'';
n = Math.abs(n);
var s ='';
for(var i =0; i <fraction.length; i++) {
s +=(digit[Math.floor(n*(10*Math.pow(10,i))) % 10] +fraction[i]).replace(/零./,'');
}
s =s || '整';
n =Math.floor(n);
for(var i =0; i < unit[0].length &&n >0; i++) {
var p ='';
for(var j =0; j <unit[1].length &&n > 0; j++) {
p =digit[n % 10] +unit[1][j] +p;
n =Math.floor(n /10);
}

s =p.replace(/(零.)*零$/,'').replace(/^$/,'零')+ unit[0][i] +s;
}

return head +s.replace(/(零.)*零圆/,'圆').replace(/(零.)+/g,'零').replace(/^整$/,'零圆整');

}
// 调用
changeDataFun('1688.98')
//壹仟陆佰捌拾捌圆玖角捌分
</script>
</body>
</html>

代码解析:

    1、通过正则判断只能输入数字

    2、对转换最大值和最小金额进行了限制

    3、定义转换方法,一维数组、二维数组循环提取定义转换金额大写。

六月初字帖坊小程序 你想要的字帖模板及工具,这里都有!