中英文金额大写转换器

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

本篇主要介绍一个中英文金额大写转换器,这个转换器的核心是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="金额" onkeyup="(this.v=function(){this.value=this.value.replace(/[^0-9|^.]+/,‘‘);}).call(this)" onblur="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" onclick="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").value
            if(!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>

转载请注明出处 http://www.cnblogs.com/Y-oung/p/7828402.html

工作、学习、交流或有任何疑问,请联系邮箱:[email protected]

时间: 2024-07-30 15:33:01

中英文金额大写转换器的相关文章

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

大写金额换算器iOS版源代码 人民币金额大写转换器输入数字即可转换成对应的人民币大写金额,操作非常简单,需一键点击,即可复制.是财务办公人员必备的小工具. 银行.单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,直接关系到支付结算的准确.及时和安全.票据和结算凭证是银行.单位和个人凭以记载账务的会计凭证,是记载经济业务和明确经济责任的一种书面证明.因此,填写票据和结算凭证必须做到标准化.规范化.要素齐全.数字正确.字迹清晰.不错漏.不潦草.防止涂改. 中文大写金额数字应用正楷

大写金额换算器iOS版源码

大写金额换算器iOS版源码 人民币金额大写转换器输入数字就可以转换成相应的人民币大写金额,操作很easy,需一键点击,就可以复制. 是財务办公人员必备的小工具. 银行.单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要根据,直接关系到支付结算的准确.及时和安全.票据和结算凭证是银行.单位和个人凭以记载账务的会计凭证.是记载经济业务和明白经济责任的一种书面证明.因此,填写票据和结算凭证必须做到标准化.规范化.要素齐全.数字正确.字迹清晰.不错漏.不潦草.防止涂改. 中文大写金额数字应

笔记02 文件上传、文件下载、类型转换器、国际化的支持

Struts2的上传 1. Struts2默认采用了apache commons-fileupload  2. Struts2支持三种类型的上传组件 3. 需要引入commons-fileupload相关依赖包 * commons-io-1.3.2.jar * commons-fileupload-1.2.1.jar 4. 表单中需要采用POST提交方式,编码类型需要使用:multipart/form-data 5. Struts2的Action     取得文件名称->>规则:输入域的名称+

springmvc 类型转换器 自定义类型转换器

自定义类型转换器的步骤: 1.定义类型转换器 2.类型转换器的注册(在springmvc配置文件处理) 来解决多种日期格式的问题:

CSS 中 Font-Family 中英文对照表

在 CSS 中,我们经常会使用 Font-Family 属性来定义字体.其中,中文字体如果直接使用中文名称,很有可能在非中文的系统环境下造成字体异常.所以通常使用字体的英文名称定义 Font-Family 的值. 常用字体中英文对照表 中文 英文 宋体 SimSun 黑体 SimHei 楷体 KaiTi 新宋体 NSimSun 仿宋 FangSong 微软雅黑 Microsoft YaHei 微软正黑体 Microsoft JhengHei 标楷体 BiauKai 新细明体 PMingLiU 细

Java 计算中英文长度的若干种方法

在项目开发中经常碰到到输入字符的校验,特别是中英文混合在一起的校验.而为了满足校验的需求,有时需要计算出中英文的长度. 本文将通过几种常用的方法实现长度的计算: <span style="font-size:18px;">import java.io.UnsupportedEncodingException; /** * 中英文校验的处理 * @author a123demi * */ public class EnChValidate { public static vo

怎么才能DWG转PDF格式转换器

对于经常图形设计的小伙伴,DWG是最熟悉不过的一种CAD图纸格式,大多数情况下,我们在编辑完DWG图纸格式后,都会将DWG图纸转换成PDF文件,这是意外PDF文件是一种更安全,更易查看的文件格式,那么如果我们想要将DWG转PDF格式,应该怎么进行操作?DWG转PDF格式转换器如何使用? 一.使用什么软件可以将DWG转PDF格式 将DWG转换成PDF格式,那么只需要使用迅捷CAD编辑器(官网下载:http://cad.xjpdf.com)就可以完成图纸的转换.这是一款专业的CAD文件编辑软件,不仅

一款不错的DWG转PDF格式转换器

DWG是我我们最常使用的一中CAD文件格式,有时候我们在编辑完DWG之后,在一些特殊情况下我们将DWG转换成更安全.更容易查看的PDF文件格式.那么如果我们想要将DWG文件转换成PDF格式我们怎么转换?DWG转PDF格式转换器应该用哪一款? 想要将DWG转换成PDF格式,就需要使用到转换的文件转换器进行转换,在这里我推荐大家使用迅捷CAD编辑器来完成转换,这款软件不仅仅是一款专业的CAD文件编辑器,而且我们还可以利用这款软件将DWG.DXF.DWT等CAD文件转换成常用的PDF.图片等文件格式.

css font-family常用的黑体宋体等字体中英文对照

在实现网页效果时,细节很重要,字体也不例外,CSS:font-family常用字体中英文对照如下: 微软雅黑: Microsoft YaHei 宋体:SimSun 黑体:SimHei 仿宋: FangSong 楷体:  KaiTi 隶书:LiSu 幼圆:YouYuan 华文细黑:STXihei 华文楷体:STKaiti 华文宋体:STSong 华文中宋:STZhongsong 华文仿宋:STFangsong 方正舒体:FZShuTi 方正姚体:FZYaoti 华文彩云:STCaiyun 华文琥珀