<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JavaScript无限位小写金额转换中文大写</title>
<style type="text/css">
body {line-height: 1.5}
.noteme0 {border:1px solid #FF0000; font-size:9pt; color:#0000FF; background-color:#FFFFFF; width:560px; line-height:2; padding:10 15 10 20; margin:20 120px;}
.noteme1 {border:1px solid #0000FF; color:#000000; background-color:#FFFFCC; margin:0 15; padding:0 10}
</style>
<script language="JavaScript">
function NumUppCCC(iiv_,ist_){ //无限位货币金额中文大写//ist_=1小写过滤//ist_=2小写标准【原版创作,合并版本】
var arr13=new Array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖','','拾','佰','仟','万','亿','元','角','分','整','负');
var iNue_=new String(iiv_).replace(/[^\d\.^\-]/g,"");
var ivv0_=(new String(iNue_).substr(0,1)=="-")?"-":"";
iNue_=new String(iNue_).replace(/\-/g,"").split(".");
iNun_=iNue_[0].split("");if (iNun_==""){iNun_[0]=0};
var ivv1_=0,ivv2_=0,ivv3_=0,ivv4_=0,iLen_=iNun_.length,iNun1_;
for (ii_=0;ii_<iLen_;ii_++){if(iNun_[ii_]==0&&ii_!=iLen_-1){iNun_[ii_]=""}
else{break}};iNun_=iNun_.join("").split("");iLen_=iNun_.length;
if (iNue_.length>1){ivv4_=1;iNue_.shift();iNue_=iNue_.join("");
var ivv1_=new String(Math.round(("1."+iNue_)*100)).substr(1,1);
var ivv2_=new String(Math.round(("1."+iNue_)*100)).substr(2,1);
if (Math.round(("1."+iNue_)*100)==200){ivv3_=1}};iNun1_=iNun_.join("");
if (ivv3_==1){iLen_=iNun_.length;for (ii_=0;ii_<iLen_;ii_++){
if (iNun_[iLen_-1-ii_]*1<9){iNun_[iLen_-1-ii_]=iNun_[iLen_-1-ii_]*1+1;break}
else{iNun_[iLen_-1-ii_]=0;if (ii_==iLen_-1){iNun_=("1"+iNun_.join("")).split("");}}}}
var iNun1_=ivv0_+iNun1_+(ivv4_==1?("."+iNue_):""),iNun2_=iNun_.join("");
while(/\d{4}(,|$)/.test(iNun2_)){iNun2_=iNun2_.replace(/(\d)(\d{3}(,|$))/,"$1,$2")};
var iLen_=iNun_.length,iNum_=new Array(iLen_);iNun2_=ivv0_+iNun2_+"."+ivv1_+ivv2_;for (ii_=0;ii_<iLen_;ii_++){
iNum_[iLen_-1-ii_]=iNun_[iLen_-1-ii_]==0?(ii_%4==0?(iLen_==1?arr13[0]:(ii_==0?"":(ii_%8==0?arr13[15]:(iLen_>ii_+4?
(iNun_[iLen_-2-ii_]==0&&iNun_[iLen_-3-ii_]==0&&iNun_[iLen_-4-ii_]==0?(iNun_[iLen_-ii_]==0?"":arr13[0]):arr13[14]):arr13[14])))):
(iNun_[iLen_-ii_]==0?"":arr13[0])):(arr13[iNun_[iLen_-ii_-1]]+(ii_%8==0&&ii_!=0?arr13[15]:(ii_%8==4?arr13[14]:arr13[10+ii_%4])))}
iNun0_=(ivv0_=="-"?arr13[20]:"")+(iNun_==0&&(ivv1_!=0||ivv2_!=0)?"":(iNum_.join("")+arr13[16]))+(ivv1_==0?(ivv2_!=0?
(iNun_==0?"":arr13[0]):""):(arr13[ivv1_]+arr13[17]))+(ivv2_==0?arr13[19]:(arr13[ivv2_]+arr13[18]));
return eval('iNun'+(ist_>=0&&ist_<3?ist_:0)+'_');}
function NumE0(iiv_){return new String(iiv_).split(".")[0].split("").length-(new String(iiv_).substr(0,1)=="-"?1:0);}
function NumE1(iiv_){return new String(iiv_).split(".").length==1?0:new String(iiv_).split(".")[1].length;}
function ibg(){
var nMonth=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
var firstDay=new Date(),tYear=firstDay.getFullYear(),tMonth=firstDay.getMonth(),ibg_=5, nbg_='';
for (i=-1;i<ibg_;i++){
nbg_+='<DIV style="Z-INDEX:-2; POSITION:absolute; left:'+((320*((1+i)%2))+20)+'; top:'+(i*120)+';text-align:center;line-height:1.1">'
nbg_+='<SPAN id=YMBG style="FONT-SIZE:80pt; COLOR:#99DD99; FONT-FAMILY:Arial Black; text-transform:uppercase">'+tYear+"<BR>"+nMonth[tMonth]+'</SPAN></DIV>'}
cld1.innerHTML=nbg_;}
</script>
</head>
<body>
<div id="noteme" class="noteme0">注意:<br />如果您的浏览器不能正常显示本页面,并在此上方出现一个黄色横条,显示:<br><div class="noteme1">为帮助保护您的安全,Internet Explorer 已经限制此文件显示可能访问您的计算机的活动内容。单击此处查看选项… X</div>
左键单击,下拉,选择<span class="noteme1">“允许阻止的内容(A)…”</span>,单击之后出现:<div class="noteme1">安全警告:允许活动内容(如脚本和 ActiveX 控件)可能对您有所帮助,但是活动也可能危害您的计算机。您确实要让此文件运行活动内容吗?</div>
选择<span class="noteme1">“是(Y)”</span>即可看到正常的页面。</div><SCRIPT>noteme.style.display="none";</SCRIPT></div>
<div id=cld1></div><script>ibg()</script>
<U>无限位小写金额转换中文大写</U><br />
小写输入:<input type="text" name="iNzz" size="50" onmouseover='focus()' onkeyup="iNbb.value=NumUppCCC(iNzz.value),iNyy.value=NumUppCCC(iNzz.value,1),iNcc.value=NumE0(iNyy.value),iNdd.value=NumE1(iNyy.value),iNaa.value=NumUppCCC(iNzz.value,2)" />(无限制校验,请随意输入数字字符等测试)<br />
数字过滤:<input type="text" name="iNyy" size="50" readonly />
e+<input type="text" name="iNcc" size="3" readonly /> e-<input type="text" name="iNdd" size="2" readonly />(指数表示小数点前后位数)<br />
小写金额:<input type="text" name="iNaa" size="50" readonly />(标准书写格式)<br />
大写金额:<input type="text" name="iNbb" size="94" readonly /><br /><br />
说明:<br />
1.本程序用JavaScript语言编写。转换方法严格遵照中国人民银行规定的银行支票中关于金额数字和票据出票日期的中文大写填写规范的相关规定(见下面附文),规定中两可之处按简便方法处理。<br />
2.输入小写金额原则上默认为纯阿拉伯数字(含负号(-)),字符型数字或数值型数字均可。转换程序本身已包含对非数字符号的检测过滤,只对有效数字转换,如:--003 5a.6z08 = -35.608 = 负叁拾伍元陆角壹分。输入文本框的检测程序另行编写。<br />
测试输入:“--3)-2w3e--4r 5t'6y,7u/8i..4…5..w..e..9..8..--6”<br />
3.所输入的阿拉伯数字具有一定容错性,支持一些不规范写法。如:., .01, -.01等。支持分位之后的四舍五入,如:.095 = 壹角整, -.999 = 负壹元整。但(0.015 = 壹分)不能四舍五入则是电脑本身浮点运算的问题,如果0.015001 = 贰分,测试可知在小数点后第16位前不能五入。<br />
4.输入和输出的金额不包含币别符号和文字,使用者可在使用时根据情况编辑。<br />
5.理论上可以无限位。采用数组处理,数组最大长度为2^32-1,作为经济工作使用足够。<br />
6.编写仓促,测试有限,如发现有错误之处请留言告知。<br /><br />
<U><I>中国人民银行规定的银行支票中关于中文大写填写规范的相关规定:</I></U><br />
1、财政部《会计基础工作规范》(财会字〔1996〕19号)第五十二条(五)有明确规定;<br />
2、1997.09.19中国人民银行关于印发《支付结算办法》的通知的附件一:<br />
正确填写票据和结算凭证的基本规定:<br />
银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,直接关系到支付结算的准确、及时和安全。票据和结算凭证是银行、单位和个人凭以记载账务的会计凭证,是记载经济业务和明确经济责任的一种书面证明。因此,填写票据和结算凭证,必须做到标准化、规范化,要要素齐全、数字正确、字迹清晰、不错漏、不潦草,防止涂改。<br />
一、中文大写金额数字应用正楷或行书填写,如壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整(正)等字样。不得用一、二(两)、三、四、五、六、七、八、九、十、廿、卅、毛、另(或〇)填写,不得自造简化字。如果金额数字书写中使用繁体字,如貳、陸、億、萬、圓的,也应受理。<br />
二、中文大写金额数字到“元”为止的,在“元”之后,应写“整”(或“正”)字,在“角”之后可以不写“整”(或“正”)字。大写金额数字有“分”的,“分”后面不写“整”(或“正”)字。<br />
三、中文大写金额数字前应标明“人民币”字样,大写金额数字应紧接“人民币”字样填写,不得留有空白。大写金额数字前未印“人民币”字样的,应加填“人民币”三字。在票据和结算凭证大写金额栏内不得预印固定的“仟、佰、拾、万、仟、佰、拾、元、角、分”字样。<br />
四、阿拉伯小写金额数字中有“0”时,中文大写应按照汉语语言规律、金额数字构成和防止涂改的要求进行书写。举例如下:<br />
(一)阿拉伯数字中间有“0”时,中文大写金额要写“零”字。如¥1,409.50,应写成人民币壹仟肆佰零玖元伍角整。<br />
(二)阿拉伯数字中间连续有几个“0”时,中文大写金额中间可以只写一个“零”字。如¥6,007.14,应写成人民币陆仟零柒元壹角肆分。<br />
(三)阿拉伯金额数字万位或元位是“0”,或者数字中间连续有几个“0”,万位、元位也是“0”,但千位、角位不是“0”时,中文大写金额中可以只写一个零字,也可以不写“零”字。如¥1,680.32,应写人民币壹仟陆佰捌拾元零叁角贰分,或者写成人民币壹仟陆佰捌拾元叁角贰分;又如¥107,000.53,应写成人民币壹拾万柒仟元零伍角叁分,或者写成人民币壹拾万零柒仟元伍角叁分。<br />
(四)阿拉伯金额数字角位是“0”,而分位不是“0”时,中文大写金额“元”后面应