因为自己大学毕业以后一直从事网上银行的开发工作,所以工作中经常遇到把金额转化为大写的情况。起初只有人民币一种币种,将金额数字翻译成中文大写的形式在各种票据中很常见,时至今日依然还在使用,在网络上很容易能找到翻译的代码。而最近在开发“贸易金融”的需求时,涉及到进口信用证的开立功能,而进口证的申请书中除了人民币之外,还涉及到很多种外币供用户选择,比如美元、日元、英镑等等。同时还要求把金额翻译成英文的形式,并把选择的币种加在金额翻译前面一同显示。这就比仅仅把金额翻译成中文大写难了一些,因为英文的翻译和中文不同,但弄懂了英文翻译规则以后,就很容易实现了。

本篇主要介绍一个中英文金额大写转换器,这个转换器的核心是JS代码,也是在实际工作中用到的,这里把JS代码稍加改造,放到HTML页面中。为了方便起见,我们把涉及到的HTML、JS、CSS统一放在一个HTML文件中,这样可以用浏览器直接打开,当然在实际工作中最好把他们放在不同的文件。下面对这个工具简单介绍。

工具的整体布局和我之前的一篇“大乐透号码生成”的工具的布局基本一致(详见 http://www.cnblogs.com/Y-oung/p/7756851.html),设置了一个下拉列表(“选择币种”)来选择不同的币种,这里仅列举了一部分币种。下面是“输入金额”项,需要在输入框输入金额,这里仅允许输入数字和小数点,控制最多输入11位,同时小数点后最多应该保留两位,否则会报错。当这两项都输入完成以后,点击“转化为大写”按钮,即可转化为中英文大写金额,并且在“中文大写”下面显示翻译的中文大写,在“英文大写”下面显示翻译的英文大写。

页面样式:

如果大家在工作或学习中遇到将金额数字转化为中文大写或英文大写的情况,不妨参考一下这个工具。

参考代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>中英文金额大写转换器</title>
<style type="text/css">
#table
{width:800px; height:500px;margin:10px;border:2px solid #000000;box-shadow: 10px 10px 5px;border-radius:50px;}
.buttonStyle
{height:40px;margin:20px;font-size:20px;background-color:#6495ED;color:white;border-radius:10px;}
.oneStyle
{margin-left:150px;margin-top:10px;font-family:sans-serif;font-size:20px;}
.oneStyle1
{margin-left:150px;margin-top:30px;font-family:sans-serif;font-size:20px;}
.InputText
{width:150px;height:20px;margin:10px;}
span
{border-radius: 50%;color: #FFFFFF;padding:3px;font-size:13px;}
</style>
</head>
<body><div id="table"><div><h1 style="text-align:center">中英文金额大写转换器</h1></div><div class="oneStyle">选择币种:<select id="currency" class="InputText" title="币种"><option value="">-----请选择-----</option><option value="CNY">人民币</option><option value="GBP">英镑</option><option value="HKD">港币</option><option value="USD">美元</option><option value="CHF">瑞士法郎</option><option value="SGD">新加坡元</option><option value="JPY">日元</option><option value="CAD">加拿大元</option><option value="AUD">澳大利亚元</option><option value="EUR">欧元</option><option value="NZD">新西兰元</option></select></div><div class="oneStyle">输入金额:<input class="InputText" type="text" id="Amount" name="Amount" maxlength="11" title="金额" οnkeyup="(this.v=function(){this.value=this.value.replace(/[^0-9|^.]+/,'');}).call(this)" οnblur="this.v();"></div><div class="oneStyle1">中文大写:<div id="ChineseWords"></div></div><div class="oneStyle1">英文大写:<div id="EnglishWords"></div></div><div style="text-align:center"><input class="buttonStyle" id="fiveNumber" type="button" οnclick="BigAmount()" value="转化为大写" title="转化为大写"></div></div><script type="text/javascript">var table = document.getElementById("table");var width = document.documentElement.clientWidth;  //浏览器可见区域宽var height = document.documentElement.clientHeight;  //浏览器可见区域高table.style.marginLeft = ((width-800)/2)+"px";table.style.marginTop = ((height-700)/2)+"px";/***************************转化为中英文大写金额 start****************************/function BigAmount() {var cur = document.getElementById("currency").value;var amo = document.getElementById("Amount").valueif(!cur){alert("请选择币种!");return;}if(!amo){alert("请输入金额!");return;}if(amo.indexOf(".")!=-1){var a = amo.split(".")[0],b = amo.split(".")[1],c = transToEnglish1(a),d = "";if(b.length > 2){alert("请保留小数点后两位!如:3.14");}else if(b=="00"||b=="0"||b==""){d = "";}else{d = " AND " + transToEnglish2(b);}document.getElementById("ChineseWords").innerHTML = allName(cur,1) + " " + transToChinese(amo);document.getElementById("EnglishWords").innerHTML = allName(cur,0) + " " + c + d;}else{document.getElementById("ChineseWords").innerHTML = allName(cur,1) + " " + transToChinese(amo);document.getElementById("EnglishWords").innerHTML = allName(cur,0) + " " + transToEnglish(amo);}};//翻译成中文大写function transToChinese(a) {var b = 9.999999999999E10,f = "零",h = "壹",g = "贰",e = "叁",k = "肆",p = "伍",q = "陆",r = "柒",s = "捌",t = "玖",l = "拾",d = "佰",i = "仟",m = "万",j = "亿",o = "元",c = "角",n = "分",v = "整";a = a.toString();b = a.split(".");if (b.length > 1) {a = b[0];b = b[1];b = b.substr(0, 2)} else {a = b[0];b = "";}h = new Array(f, h, g, e, k, p, q, r, s, t);l = new Array("", l, d, i);m = new Array("", m, j);n = new Array(c, n);c = "";if (Number(a) > 0) {for (d = j = 0; d < a.length; d++) {e = a.length - d - 1;i = a.substr(d,1);g = e / 4;e = e % 4;if (i == "0"){j++;}else{if (j > 0) {c += h[0];}j = 0;c += h[Number(i)] + l[e];}if (e == 0 && j < 4) {c += m[g];}}c += o;}if (b != "") {for (d = 0; d < b.length; d++) {i = b.substr(d, 1);if (i != "0") c += h[Number(i)] + n[d];}}if (c == "") {c = f + o;}if (b.length < 2) {c += v;}return c = c;}//翻译成英文大写var arr1 = new Array("", " thousand", " million", " billion"),arr2 = new Array("zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"),arr3 = new Array("zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"),arr4 = new Array("ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen");function transToEnglish(a) {var b = a.length,f, h = 0,g = "",e = Math.ceil(b / 3),k = b - e * 3;g = "";for (f = k; f < b; f += 3) {++h;num3 = f >= 0 ? a.substring(f, f + 3) : a.substring(0, k + 3);strEng = toEnglish(num3);if (strEng != "") {if (g != "") {g += ",";}g += toEnglish(num3) + arr1[e - h];}}return g.toUpperCase();}function transToEnglish1(a) {var b = a.length,f, h = 0,g = "",e = Math.ceil(b / 3),k = b - e * 3;g = "";for (f = k; f < b; f += 3) {++h;num3 = f >= 0 ? a.substring(f, f + 3) : a.substring(0, k + 3);strEng = toEnglish(num3);if (strEng != "") {if (g != "") {g += ",";}g += toEnglish(num3) + arr1[e - h];}}return g.toUpperCase();}function transToEnglish2(a) {var b = a.length,f, h = 0,g = "",e = Math.ceil(b / 3),k = b - e * 3;g = "";for (f = k; f < b; f += 3) {++h;num3 = f >= 0 ? a.substring(f, f + 3) : a.substring(0, k + 3);strEng = toEnglish(num3);if (strEng != "") {if (g != "") g += ",";g += toEnglish(num3) + arr1[e - h];}}return "CENTS "+g.toUpperCase();}function toEnglish(a) {strRet = "";if (a.length == 3 && a.substr(0, 3) != "000") {if (a.substr(0, 1) != "0") {strRet += arr3[a.substr(0, 1)] + " hundred";if (a.substr(1, 2) != "00") strRet += " and ";}a = a.substring(1);}if (a.length == 2)if (a.substr(0, 1) == "0") a = a.substring(1);else if (a.substr(0, 1) == "1") strRet += arr4[a.substr(1, 2)];else {strRet += arr2[a.substr(0, 1)];if (a.substr(1, 1) != "0") strRet += "-";a = a.substring(1);} if (a.length == 1 && a.substr(0, 1) != "0") strRet += arr3[a.substr(0, 1)];return strRet;};//各币种币别中英文全称function allName(a,n) {var name = "";switch(a){case "CNY" : name = n=="1" ? "人民币" : "Chinese Yuan";break;case "GBP" : name = n=="1" ? "英镑" : "GreatBritain Pound";break;case "HKD" : name = n=="1" ? "港币" : "HongKong Dollars";break;case "USD" : name = n=="1" ? "美元" : "US Dollars";break;case "CHF" : name = n=="1" ? "瑞士法郎" : "Schweizer Franken";break;case "SGD" : name = n=="1" ? "新加坡元" : "Singapore Dollars";break;case "JPY" : name = n=="1" ? "日元" : "Japanese Yen";break;case "CAD" : name = n=="1" ? "加拿大元" : "Canadian Dollars";break;case "AUD" : name = n=="1" ? "澳大利亚元" : "Australian Dollars";break;case "EUR" : name = n=="1" ? "欧元" : "Euro";break;case "NZD" : name = n=="1" ? "新西兰元" : "New Zealand Dollars";break;}return n=="1" ? name : name.toUpperCase();}/***************************转化为中英文大写金额 end****************************/</script>
</body>
</html>

zhuanzi http://www.cnblogs.com/Y-oung/p/7828402.html

转载于:https://www.cnblogs.com/shizhijie/p/8428803.html

中英文金额大写转换器相关推荐

  1. python小程序_小会计的实用Python小程序(三):人民币大写金额转换器

    大家好,我是Susie. 作为一只财务狗,平时难免要给客户出具一些收款单,在我国收款单上往往会有一个叫"大写金额"的东西,比如收款9,876,543,210.12元,我们就要在收款 ...

  2. 大写金额换算器iOS版源代码

    大写金额换算器iOS版源代码 人民币金额大写转换器输入数字即可转换成对应的人民币大写金额,操作非常简单,需一键点击,即可复制.是财务办公人员必备的小工具. 银行.单位和个人填写的各种票据和结算凭证是办 ...

  3. ip转换器哪个好用_中英文翻译软件哪个好?试试这两个就知道了

    我们经常遇到的翻译形式,无非就是中英文翻译了.有时候我们需要大量翻译文件,但是我们的翻译能力有限,我们该怎么办呢?可以帮助到我们的中英文翻译软件哪个好呢?大家可以试试下面这两个,不会让你失望的. 一. ...

  4. 什么是RS232/RS485转换器?

    485转以太网提供串口转网络功能,能够将RS-232/485/422串口转换成TCP/IP网络接口,实现RS-232/485/422串口与TCP/IP网络接口的数据双向透明传输.使得串口设备能够立即具 ...

  5. avs3 ts格式封装 标准_第480期【软件】吊打格式工厂—高清视频转换器WonderFox HD Video便携版...

    用心分享 一黑一白 蝶科技 一个分享软件/素材/后期/网站/教程的资源公众号 资源概览深度体验 侵权请联系删除 软件 WonderFox HD Video Converter Factory Pro, ...

  6. html 字体图标转换工具,字体转换器

    路由器之家网今天精心准备的是<字体转换器>,下面是详解! 如何将文字转换成语音 用浮云合音软件可以,把文本上传到浮云合音软件上,然后一键进行转换,生成语音. 省时省力,效率高. 浮云合音软 ...

  7. 嵌入式开发板硬件操作入门学习9——集成电路芯片手册术语词汇表(中英文对照)

    原创链接:集成电路芯片半导体中英文对照术语词汇表 英语 中文 1-9 10 gigabit 10 Gb 1st Nyquist zone 第一奈奎斯特区域 3D full‑wave electroma ...

  8. 图形化文本编辑器_使用图形转换器从知识图生成文本

    图形化文本编辑器 A summary of the structure 结构总结 This 2019 paper is a bit of an anachronism, given the speed ...

  9. 在计算机中这样切换大小英语字母,英文大小写转换器在线

    手机评站网今天精心准备的是<英文大小写转换器在线>,下面是详解! 英文的大小写转换 我需要一个软件可以输入数字转换成英文的举例122:ONEHUNDREDANDTWENTYTWO24234 ...

  10. jpg格式转换器下载

    jpg格式转换器下载 这里推荐一款把JPG图片转换成PDF文件软件. 1.软件简介: 迅捷 JPG转换成PDF转换器免费试用版V4.1是一款多文件格式转换工具,采用中文界面,软件本身体积小巧,软件具备 ...

最新文章

  1. linux 档案类型s,Linux学习(四)档案与目录管理
  2. iOS 开发音视频流[1]---FFmpeg
  3. 物理攻击规避(Physical Attack Mitigation)
  4. 字典,和字典的增删改查
  5. 数理统计--相关系数
  6. 04.监控过程组-偏差分析
  7. python对csv数据提取某列的某些行_python pandas获取csv指定行 列的操作方法
  8. 选择器高级、样式及布局
  9. 苹果 M1 Pro 和 M1 Max 与原始 M1 相比性能如何?
  10. 提升技能必备网站(不定时更新)
  11. VAX插件、vs2012
  12. 实现酒店无线覆盖和无线漫游
  13. html5 心形照片墙,教你两种“心形拼图”法|制作照片墙,3分钟搞定!
  14. python中shelf_在python 3中使用python 2 shelf
  15. SAP ABAP——内表(三)【工作区与表头】
  16. IntelliJ IDEA 2018.2 x64激活
  17. linux下c语言调用mysql,Linux下C语言操作MYSQL总结
  18. mysql服务端heidisql_MySQL管理工具HeidiSQL
  19. 性能测试/压力测试/负载测试
  20. Java常用的Dos命令

热门文章

  1. sms 验证码 接收
  2. sql概念模型和逻辑模型
  3. 在计算机运行时 把程序和数据存放在内存中,单选(2.5分) 在计算机运行时,把程序和数据一样存放在内存中,这是1946年由__________领导的小组正式提出并论证的。‍...
  4. remote debugger java,VS2015 远程调试:Remote Debugger
  5. 二叉树的中序遍历-python
  6. 整理牛人看文献的方法
  7. OA办公系统审批流程是什么?
  8. Kubernetes快速部署
  9. ASIC和FPGA设计流程
  10. AtCoder Beginner Contest 275 A-D题解