王小胖之数字转大写

使用场景:一般在书写正规金额的时候都要求填写大写数字。

实现功能:数字转大写功能主要实现:输入小写阿拉伯数字,转换成大写

数据实例:输入,12345678.90   输出,人民币:壹仟贰佰叁拾肆万伍仟陆佰柒拾捌元玖角

功能实现:

Html代码

<div class="input-group">
    <input name="kw" type="text" class="form-control" placeholder="数字" id="lower" value="12345678.90">
    <div class="input-group-btn">
    <button type="submit" class="btn btn-success" id="convert">转换</button>
        </div>
</div>

JS代码

<script src="/wxp123/Public/js/number/numberconvert.js"></script>
            <script type="text/javascript">
                  $(function(){
                      $("#convert").click(function(){
                          lower= $("#lower").val();
                          upper=convertCurrency(lower);
                          $("#upper").val(upper);
                      });

                      $("#lower").change(function(){
                          lower= $("#lower").val();
                          upper=convertCurrency(lower);
                          $("#upper").val(upper);
                      });
                  });
               </script>

numberconvert.js

function convertCurrency(currencyDigits) {
// Constants:
    var MAXIMUM_NUMBER = 99999999999.99;
    // Predefine the radix characters and currency symbols for output:
    var CN_ZERO = "零";
    var CN_ONE = "壹";
    var CN_TWO = "贰";
    var CN_THREE = "叁";
    var CN_FOUR = "肆";
    var CN_FIVE = "伍";
    var CN_SIX = "陆";
    var CN_SEVEN = "柒";
    var CN_EIGHT = "捌";
    var CN_NINE = "玖";
    var CN_TEN = "拾";
    var CN_HUNDRED = "佰";
    var CN_THOUSAND = "仟";
    var CN_TEN_THOUSAND = "万";
    var CN_HUNDRED_MILLION = "亿";
    var CN_SYMBOL = "人民币:";
    var CN_DOLLAR = "元";
    var CN_TEN_CENT = "角";
    var CN_CENT = "分";
    var CN_INTEGER = "整"; 

// Variables:
    var integral;    // Represent integral part of digit number.
    var decimal;    // Represent decimal part of digit number.
    var outputCharacters;    // The output result.
    var parts;
    var digits, radices, bigRadices, decimals;
    var zeroCount;
    var i, p, d;
    var quotient, modulus; 

// Validate input string:
    currencyDigits = currencyDigits.toString();
    if (currencyDigits == "") {
        alert("请输入小写金额!");
        return "";
    }
    if (currencyDigits.match(/[^,.\d]/) != null) {
        alert("小写金额含有无效字符!");
        return "";
    }
    if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) {
        alert("小写金额的格式不正确!");
        return "";
    } 

// Normalize the format of input digits:
    currencyDigits = currencyDigits.replace(/,/g, "");    // Remove comma delimiters.
    currencyDigits = currencyDigits.replace(/^0+/, "");    // Trim zeros at the beginning.
    // Assert the number is not greater than the maximum number.
    if (Number(currencyDigits) > MAXIMUM_NUMBER) {
        alert("金额过大,应小于1000亿元!");
        return "";
    } 

// Process the coversion from currency digits to characters:
    // Separate integral and decimal parts before processing coversion:
    parts = currencyDigits.split(".");
    if (parts.length > 1) {
        integral = parts[0];
        decimal = parts[1];
        // Cut down redundant decimal digits that are after the second.
        decimal = decimal.substr(0, 2);
    }
    else {
        integral = parts[0];
        decimal = "";
    }
    // Prepare the characters corresponding to the digits:
    digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);
    radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);
    bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);
    decimals = new Array(CN_TEN_CENT, CN_CENT);
    // Start processing:
    outputCharacters = "";
    // Process integral part if it is larger than 0:
    if (Number(integral) > 0) {
        zeroCount = 0;
        for (i = 0; i < integral.length; i++) {
            p = integral.length - i - 1;
            d = integral.substr(i, 1);
            quotient = p / 4;
            modulus = p % 4;
            if (d == "0") {
                zeroCount++;
            }
            else {
                if (zeroCount > 0)
                {
                    outputCharacters += digits[0];
                }
                zeroCount = 0;
                outputCharacters += digits[Number(d)] + radices[modulus];
            }
            if (modulus == 0 && zeroCount < 4) {
                outputCharacters += bigRadices[quotient];
                zeroCount = 0;
            }
        }
        outputCharacters += CN_DOLLAR;
    }
    // Process decimal part if there is:
    if (decimal != "") {
        for (i = 0; i < decimal.length; i++) {
            d = decimal.substr(i, 1);
            if (d != "0") {
                outputCharacters += digits[Number(d)] + decimals[i];
            }
        }
    }
    // Confirm and return the final output string:
    if (outputCharacters == "") {
        outputCharacters = CN_ZERO + CN_DOLLAR;
    }
    if (decimal == "") {
        outputCharacters += CN_INTEGER;
    }
    outputCharacters = CN_SYMBOL + outputCharacters;
    return outputCharacters;
} 

--------------------------------------------------------------------------------------------------------------------------

不爱说话,一切以代码为主,其他 全靠悟性!

数字转大写功能地址:http://www.wxp123.me/Index/detail/id/10.html

王小胖个人博客地址:http://blog.wxp123.me/

时间: 2024-11-07 02:38:24

王小胖之数字转大写的相关文章

王小胖之中文汉字转拼音

使用场景:看到一个字不知道读音,那么可以复制然后查一下. 实现功能:输入汉字,转换成带音标的读音,重点是能显示音标,便于学习读音. 数据实例:输入:“王小胖顶呱呱~~”  输出:“wáng xiǎo pàng dǐng guā guā ~~” 功能实现: html代码 <div class="input-group"> <input name="kw" type="text" class="form-control&q

小写数字转大写

--小写数字转大写,只是单纯的将数字转换为大写了,还要加单位 create or replace function chinese(number1 number) return varchar2 is Result varchar2(30):=' '; v_chinese varchar2(25):='零壹贰叁肆伍陆柒捌玖'; v_char varchar2(10); begin for i in 1..length(number1) loop select substr(v_chinese,s

将金额数字转换为大写汉字的js函数

1 //将金额数字转换为大写汉字的函数 2 function convertCurrency(money) { 3 //汉字的数字 4 var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); 5 //基本单位 6 var cnIntRadice = new Array('', '拾', '佰', '仟'); 7 //对应整数部分扩展单位 8 var cnIntUnits = new Array('', '

c# 财务报表数字转大写的方法

/// <summary>/// 数字转大写/// </summary>/// <param name="Num">数字</param>/// <returns></returns> public static string CmycurD(decimal num) { string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字 string str2 = "万仟佰

验证数字,大写字母,小写字母,特殊字符四选三组成的密码强度,且长度在8到30个数之间

验证数字,大写字母,小写字母,特殊字符四选三组成的密码强度,且长度在8到30个数之间 表达式: ^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\[email protected]#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\[email protected]#$%^&*`~()-+=]+$)(?![0-9\[email protected]#$%^&*`~()-+=]+$)[a-zA-Z0-9\[email protecte

数字转大写

转载:http://www.oschina.net/code/snippet_102306_4705 1.JS实现方法 static string ConvertToChinese(double x)     {         string s = x.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");         string d = Regex.Replace(s, @&quo

Java中金额数字转换为大写数字

注:该代码来自于别人,我引入进来并修改了里面的几个bug.现在写进我的博客里,以便于日后查看,和为其它博友们提供方便 修改bug地方:1.金额为0时,不加整.以前是零元整,现在是零元    2.修改"分", "角", "元","万", "亿","兆"位不会出现零 package com.zbx.bs.common.util;import java.math.BigDecimal; /**

PHP 数字转大写

<?php header("content-type:text/html;charset=utf-8"); function numToRmb($num){ $rmbNum = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']; $rmbUnit = ['分','角','元','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟','万','拾','佰','仟']; //数字预处理 if($num == '' ||

如何将人民币数字转为大写

废话不说,直接上代码,实现传入数字输出人民币大写 let num="5556.4" console.log(numTocoggle(num)) function numTocoggle(num){ var regexp=/^\d+(([.]{1}(\d{0,2}))+){0,1}$/ if(regexp.test(num)){ /* 壹佰贰拾叁亿 伍仟陆佰捌拾捌万 捌仟伍佰伍拾伍元 伍角叁分*/ let digital=["零","壹",&quo