JavaScript将数字转为人民币或美元汉字写法

人民币大写方式常见于一些正式的地方,如票据、合同等都会使用人民币大写方式来填写金额。不仅不容易更改更能显示其正式、更不易修改。

本文介绍使用js来实现将数字转换成人民币大写方式,代码如下。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
function numberToHanzi(money,type) {
//汉字的数字
var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
//基本单位
var cnIntRadice = new Array('', '拾', '佰', '仟');
//对应整数部分扩展单位
var cnIntUnits = new Array('', '万', '亿', '兆');
//对应小数部分单位
var cnDecUnits = new Array('角', '分');
//整数金额时后面跟的字符
var cnInteger = '整';
//整型完以后的单位
var cnIntLast = '元';
if(type=='$'){
cnDecUnits = new Array('', '美分');
cnIntLast = '美元';
}
//最大处理的数字
var maxNum = 999999999999999.99;
//金额整数部分
var integerNum;
//金额小数部分
var decimalNum;
//输出的中文金额字符串
var chineseStr = '';
//分离金额后用的数组,预定义
var parts;
if (money == '') { return ''; }
money = parseFloat(money);
if (money >= maxNum) {
//超出最大处理数字
alert("超出了最大处理数字")
return '';
}
if (money == 0) {
chineseStr = cnNums[0] + cnIntLast + cnInteger;
return chineseStr;
}
//转换为字符串
money = money.toString();
if (money.indexOf('.') == -1) {
integerNum = money;
decimalNum = '';
} else {
parts = money.split('.');
integerNum = parts[0];
decimalNum = parts[1].substr(0, 2);
}
//获取整型部分转换
if (parseInt(integerNum, 10) > 0) {
var zeroCount = 0;
var IntLen = integerNum.length;
for (var i = 0; i < IntLen; i++) {
var n = integerNum.substr(i, 1);
var p = IntLen - i - 1;
var q = p / 4;
var m = p % 4;
if (n == '0') {
zeroCount++;
} else {
if (zeroCount > 0) {
chineseStr += cnNums[0];
}
//归零
zeroCount = 0;
chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
}
if (m == 0 && zeroCount < 4) {
chineseStr += cnIntUnits[q];
}
}
chineseStr += cnIntLast;
}
//小数部分
if (decimalNum != '') {
var decLen = decimalNum.length;
for (var i = 0; i < decLen; i++) {
var n = decimalNum.substr(i, 1);
if (n != '0') {
if(type=='$'){
if(decLen>=2){
cnDecUnits = new Array('十', '美分', '毫', '厘');
chineseStr += cnNums[Number(n)] + cnDecUnits[i];
}else{
cnDecUnits = new Array('', '十美分', '毫', '厘');
chineseStr += cnNums[Number(n)] + cnDecUnits[i];
}
}else{
chineseStr += cnNums[Number(n)] + cnDecUnits[i];
}

}
}
}
if (chineseStr == '') {
chineseStr += cnNums[0] + cnIntLast + cnInteger;
} else if (decimalNum == '') {
chineseStr += cnInteger;
}
return chineseStr;
}
//中文人民币写法
console.log(numberToHanzi(1666.88))
//中文美元写法
console.log(numberToHanzi(1666.88,'$'))
</script>
</body>
</html>

numberToHanzi()方法的使用

    numberToHanzi为自定义个的一个将数字转换为人民币大写或美元汉字书写的方法,通过如上对numberToHanzi()方法的调用可以轻松实现将数字转换成人民币大写或美元汉字书写结果。

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