高分求用javascript开发一个金钱小写转换到大写的程序

itok000 2003-05-09 05:01:46
同题
...全文
40 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
nice90 2003-05-10
  • 打赏
  • 举报
回复
在CSDN的文档里有,楼上的就是在那里找的,请搜索一下。
zhjzh_zjz 2003-05-10
  • 打赏
  • 举报
回复
//*********将金额转换为大写的汉字表示********************************
function changeToBig(value)
{
var intFen,i;
var strArr,strCheck,strFen,strDW,strNum,strBig,strNow;

if(trim(value)=="") //数据为空时返回"零"
return "零";
if (isNaN(value)) //数据非法时提示,并返回空串
{
strErr = "数据"+value+"非法!"
alert(strErr);
return "";
}
strCheck = value+".";
strArr = strCheck.split(".");
strCheck = strArr[0];
if(strCheck.length>12) //数据大于等于一万亿时提示无法处理
{
strErr = "数据"+value+"过大,无法处理!"
alert(strErr);
return "";
}
try
{
i = 0;
strBig = "";
intFen = value*100; //转换为以分为单位的数值
strFen = intFen.toString();
strArr = strFen.split(".");
strFen = strArr[0];
intFen = strFen.length; //获取长度
strArr = strFen.split(""); //将各个数值分解到数组内
while(intFen!=0) //分解并转换
{
i = i+1;
switch(i) //选择单位
{
case 1:strDW = "分";break;
case 2:strDW = "角";break;
case 3:strDW = "元";break;
case 4:strDW = "拾";break;
case 5:strDW = "佰";break;
case 6:strDW = "仟";break;
case 7:strDW = "万";break;
case 8:strDW = "拾";break;
case 9:strDW = "佰";break;
case 10:strDW = "仟";break;
case 11:strDW = "亿";break;
case 12:strDW = "拾";break;
case 13:strDW = "佰";break;
case 14:strDW = "仟";break;
}
switch (strArr[intFen-1]) //选择数字
{
case "1":strNum = "壹";break;
case "2":strNum = "贰";break;
case "3":strNum = "叁";break;
case "4":strNum = "肆";break;
case "5":strNum = "伍";break;
case "6":strNum = "陆";break;
case "7":strNum = "柒";break;
case "8":strNum = "捌";break;
case "9":strNum = "玖";break;
case "0":strNum = "零";break;
}

strNow = strBig.split(""); //处理特殊情况
if((i==1)&&(strArr[intFen-1]=="0")) //分为零时的情况
strBig = "整";
else if((i==2)&&(strArr[intFen-1]=="0")) //角为零时的情况
{
if(strBig!="整") //角分同时为零时的情况
strBig = "零"+strBig;
}
else if((i==3)&&(strArr[intFen-1]=="0")) //元为零的情况
strBig = "元"+strBig;
else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="元")) //拾-仟中一位为零且其前一位(元以上)不为零的情况时补零
strBig = "零"+strBig;
else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零")) //拾-仟中一位为零且其前一位(元以上)也为零的情况时跨过
{}
else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="元")) //拾-仟中一位为零且其前一位是元且为零的情况时跨过
{}
else if((i==7)&&(strArr[intFen-1]=="0")) //当万为零时必须补上万字
strBig ="万"+strBig;
else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="万")) //拾万-仟万中一位为零且其前一位(万以上)不为零的情况时补零
strBig = "零"+strBig;
else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="万")) //拾万-仟万中一位为零且其前一位(万以上)也为零的情况时跨过
{}
else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零")) //拾万-仟万中一位为零且其前一位为万位且为零的情况时跨过
{}
else if((i<11)&&(i>8)&&(strArr[intFen-1]!="0")&&(strNow[0]=="万")&&(strNow[2]=="仟")) //万位为零且存在仟位和十万以上时,在万仟间补零
strBig = strNum+strDW+"万零"+strBig.substring(1,strBig.length);
else if(i==11) //单独处理亿位
{
if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]=="仟"))//亿位为零且万全为零存在仟位时,去掉万补为零
strBig ="亿"+"零"+strBig.substring(1,strBig.length);
else if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]!="仟"))//亿位为零且万全为零不存在仟位时,去掉万
strBig ="亿"+strBig.substring(1,strBig.length);
else if((strNow[0]=="万")&&(strNow[2]=="仟"))//亿位不为零且万全为零存在仟位时,去掉万补为零
strBig = strNum+strDW+"零"+strBig.substring(1,strBig.length);
else if((strNow[0]=="万")&&(strNow[2]!="仟"))//亿位不为零且万全为零不存在仟位时,去掉万
strBig = strNum+strDW+strBig.substring(1,strBig.length);

else //其他正常情况
strBig = strNum+strDW+strBig;
}
else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="亿")) //拾亿-仟亿中一位为零且其前一位(亿以上)不为零的情况时补零
strBig = "零"+strBig;
else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="亿")) //拾亿-仟亿中一位为零且其前一位(亿以上)也为零的情况时跨过
{}
else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零")) //拾亿-仟亿中一位为零且其前一位为亿位且为零的情况时跨过
{}
else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]!="仟")) //亿位为零且不存在仟万位和十亿以上时去掉上次写入的零
strBig = strNum+strDW+strBig.substring(1,strBig.length);
else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]=="仟")) //亿位为零且存在仟万位和十亿以上时,在亿仟万间补零
strBig = strNum+strDW+"亿零"+strBig.substring(2,strBig.length);
else
strBig = strNum+strDW+strBig;
strFen = strFen.substring(0,intFen-1);
intFen = strFen.length;
strArr = strFen.split("");
}
return strBig;
}catch(err){
return ""; //若失败则返回原值
}
}

//我也使用的这个,情报六别人的版权。我也是从网上别人那里得到的。
zhangguagua 2003-05-09
  • 打赏
  • 举报
回复
呵呵,分好高呀?
-------------------------------------
金钱小写转换到大写
---------
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<input type="text" name="num" onblur="javascript:this.value=Math.round(parseFloat(this.value)*100)/100" onKeyUp="this.value=this.value.replace(/[^0-9.]/,'');">
<input type="text" name="text">
<input type="button" name="Button" value="Button" onclick="Transform()">
<script language="JavaScript">
function Transform()
{
var whole = document.all.num.value;

//分离整数与小数
var num;
var dig;
if(whole.indexOf(".") == -1)
{
num = whole;
dig = "";
}
else
{
num = whole.substr(0,whole.indexOf("."));
dig = whole.substr( whole.indexOf(".")+1, whole.length);
}

//转换整数部分
var i=1;
var len = num.length;

var dw2 = new Array("","万","亿");//大单位
var dw1 = new Array("拾","佰","千");//小单位
var dw = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");//整数部分用
var dws = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");//小数部分用
var k1=0;//计小单位
var k2=0;//计大单位
var str="";

for(i=1;i<=len;i++)
{
var n = num.charAt(len-i);
if(n=="0")
{
if(k1!=0)
str = str.substr( 1, str.length-1);
}

str = dw[Number(n)].concat(str);//加数字

if(len-i-1>=0)//在数字范围内
{
if(k1!=3)//加小单位
{
str = dw1[k1].concat(str);
k1++;
}
else//不加小单位,加大单位
{
k1=0;
var temp = str.charAt(0);
if(temp=="万" || temp=="亿")//若大单位前没有数字则舍去大单位
str = str.substr( 1, str.length-1);
str = dw2[k2].concat(str);
}
}


if(k1==3)//小单位到千则大单位进一
{
k2++;
}

}

//转换小数部分
var strdig="";
for(i=0;i<2;i++)
{
var n = dig.charAt(i);
strdig += dws[Number(n)];//加数字
if(i==0) strdig=strdig+"角";
if(i==1) strdig=strdig+"分";
}


str+="圆"+strdig;


document.all.text.value = str;
}
</script>
</body>
</html>

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧