人民币大写转换函数(JavaScript)

阅读: 评论:0

人民币大写转换函数(JavaScript)

人民币大写转换函数(JavaScript)

今天在博客园上看到了有人贴了 人民币大写转化函数(C#版) ,于是也顺便把自己以前的写的JavaScript版的转换函数贴出来,相互参考和学习一下。

该函数完成如下功能:

1、对一给定字符串,如:1234.55,转换成正确的中文货币描述:如:人民币壹仟贰佰叁拾四元五角五分

2、输入的字符串形式可以是以下几种:带分隔符的,如:123,456,789.00;不带分隔符的,如:123456789

3、输出的中文货币描述要符合规范,如:0.3----人民币三角;0.33----人民币三角三分;1----人民币壹元整
   100----人民币壹佰元整;1001----人民币壹仟零壹元整;10000001----人民币壹仟万零壹元整;
   10010001----人民币壹仟零壹万零壹元整,等

4、最大转换能到百亿


下面是运行效果:


具体的代码如下:

<! DOCTYPE HTML PUBLIC  " -//W3C//DTD HTML 4.0 Transitional//EN " >
< html >
     < head >
         < title ></ title >
         < meta content = " Microsoft Visual Studio .NET 7.1 "  name = " GENERATOR " >
         < meta content = " VisualStudio.HTML "  name = " ProgId " >
         < meta content = " Microsoft Visual Studio .NET 7.1 "  name = " Originator " >
         < script language = " jscript " >
/* ****************************************
     Copyright (c) 2004, Laser Lu      
                     
 **************************************** */
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  =  String();
     if  (currencyDigits  ==   "" ) {
        alert( " Empty input! " );
         return   "" ;
    }
     if  (currencyDigits.match( / [ ^ ,.d] / )  !=   null ) {
        alert( " Invalid characters in the input string! " );
         return   "" ;
    }
     if  ((currencyDigits).match( /^ ((d{ 1 , 3 }(,d{ 3 }) * (.((d{ 3 },) * d{ 1 , 3 })) ? ) | (d + (.d + ) ? ))$ / )  ==   null ) {
        alert( " Illegal format of digit number! " );
         return   "" ;
    }
    
//  Normalize the format of input digits:
    currencyDigits  =  place( / , / g,  "" );     //  Remove comma delimiters.
    currencyDigits  =  place( /^ 0 +/ ,  "" );     //  Trim zeros at the beginning.
     //  Assert the number is not greater than the maximum number.
     if  (Number(currencyDigits)  >  MAXIMUM_NUMBER) {
        alert( " Too large a number to convert! " );
         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;
}
         </ script >
     </ head >
     < body >
         < INPUT id = " Digits "  type = " text "  name = " Digits "  size = 20 >
         < INPUT id = " Convert "  type = " button "  value = " Convert "  name = " Convert "  onclick = " Result.value = convertCurrency(Digits.value); " >
         < INPUT id = " Result "  type = " text "  name = " Result "  size = 60 >
     </ body >
</ html >

转载于:.html

本文发布于:2024-02-02 00:26:28,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170681029340185.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   人民币   JavaScript
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23