javascript将数字转化成大写形式

26 篇文章 1 订阅
24 篇文章 0 订阅
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>price_transform</title>
<script language="javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript">
function xx3(){
var value = $("#number").val();
alert(changeToBig(value));
}

//*********将金额转换为大写的汉字表示********************************
 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 "";      //若失败则返回原值
} 
}
</script>
</head>
<body>
<input type="text" id="number" /> <input type="button" value="计算" οnclick="xx3()"/>
</body>
</html>
ps:里面用到了jquery中的trim()方法,因此导入了jquery的包
附代码下载位置: http://download.csdn.net/detail/he20101020/5330037
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值