以下是 JavaScript 实现金额转大写的代码:
| function convertCurrency(money) { |
| |
| var cnNums = new Array( |
| "零", |
| "壹", |
| "贰", |
| "叁", |
| "肆", |
| "伍", |
| "陆", |
| "柒", |
| "捌", |
| "玖" |
| ); |
| |
| var cnIntRadice = new Array("", "拾", "佰", "仟"); |
| |
| var cnIntUnits = new Array("", "万", "亿", "兆"); |
| |
| var cnDecUnits = new Array("角", "分", "毫", "厘"); |
| |
| var cnInteger = "整"; |
| |
| var cnIntLast = "元"; |
| |
| var maxNum = 999999999999999.9999; |
| |
| var integerNum; |
| |
| var decimalNum; |
| |
| var chineseStr = ""; |
| |
| var parts; |
| if (money == "") { |
| return ""; |
| } |
| money = parseFloat(money); |
| if (money >= maxNum) { |
| |
| 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, 4); |
| } |
| |
| 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") { |
| chineseStr += cnNums[Number(n)] + cnDecUnits[i]; |
| } |
| } |
| } |
| if (chineseStr == "") { |
| chineseStr += cnNums[0] + cnIntLast + cnInteger; |
| } else if (decimalNum == "") { |
| chineseStr += cnInteger; |
| } |
| return chineseStr; |
| } |
使用方法:
| var money = 1234.56; |
| var chineseStr = convertCurrency(money); |
| console.log(chineseStr); |
以下是一种简单的 JavaScript 实现金额转大写的方式:
| function convertCurrency(money) { |
| |
| const cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; |
| |
| const cnIntRadice = ['', '拾', '佰', '仟']; |
| |
| const cnIntUnits = ['', '万', '亿', '兆']; |
| |
| const cnDecUnits = ['角', '分', '毫', '厘']; |
| |
| const cnInteger = '整'; |
| |
| const cnIntLast = '元'; |
| |
| let chineseStr = ''; |
| let parts; |
| if (money == '') { |
| return ''; |
| } |
| money = parseFloat(money); |
| if (isNaN(money) || money >= 1000000000000) { |
| return ''; |
| } |
| money = money.toFixed(2); |
| parts = money.split('.'); |
| let integerNum = parts[0]; |
| let decimalNum = parts[1]; |
| if (parseInt(integerNum) > 0) { |
| let zeroCount = 0; |
| let IntLen = integerNum.length; |
| for (let i = 0; i < IntLen; i++) { |
| let n = integerNum.substr(i, 1); |
| let p = IntLen - i - 1; |
| let q = p / 4; |
| let 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 != '') { |
| let decLen = decimalNum.length; |
| for (let i = 0; i < decLen; i++) { |
| let n = decimalNum.substr(i, 1); |
| if (n != '0') { |
| chineseStr += cnNums[Number(n)] + cnDecUnits[i]; |
| } |
| } |
| } |
| if (chineseStr == '') { |
| chineseStr += cnNums[0] + cnIntLast + cnInteger; |
| } else if (decimalNum == '') { |
| chineseStr += cnInteger; |
| } |
| return chineseStr; |
| } |
使用方法和上面的例子相同。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了