人民币小写转大写


人民币小写转大写
--亮点:(1)用字符串存储大写(相当于小写是数组下标,数组存储值为小写对应大写)及位级(位级排序恰对应小写位置)
(2)先给数字*100并做round截取,免去小数点处理。
function toChRMB(objectValue)
{
var returnValue = objectValue;
var comma_sign = returnValue.indexOf(",");
while(comma_sign != -1)
{
returnValue = returnValue.replace(",","");
comma_sign = returnValue.indexOf(",");
}
if(!CheckIsFloat(returnValue)){
alert("输入的不是数字,请重新输入!");
return "";
}
var thisValue=parseFloat(returnValue);

if (thisValue==0 ){
return "零元整";
}
if (thisValue<0 ){
alert("输入的数字必须大于零,请重新输入!");
return "";
}
var ch_num="壹贰叁肆伍陆柒捌玖零";
var ch_rank="分角元拾佰仟万拾佰仟亿拾佰仟万";

thisValue=Math.round(thisValue*100);
//转换为字符
thisValue=""+thisValue;

var i_rank,i_num;
var c_rank,c_num;
var i_length=thisValue.length;
var s_chinese_tmp="";
for(i=0;i<i_length;i++){
c_rank="";
c_num="";

i_num=parseInt(thisValue.substr(i,1));
if (i_num==0)
i_num=10;
c_num=ch_num.substr(i_num - 1,1); //生成大写数字,即‘壹贰叁....'

i_rank=parseInt(i_length - i);
c_rank=ch_rank.substr(i_rank - 1,1); //生成大写位,即‘仟佰拾....'
s_chinese_tmp+=c_num+c_rank;
}

//将零千零百等去掉
var s_tmp;
var s_chinese="";

for(i=0;i<s_chinese_tmp.length;i=i+2){
s_tmp=s_chinese_tmp.substr(i,2);
if(s_tmp.substr(0,1)!='零')
s_chinese+=s_tmp;
else if (s_tmp.substr(0,1)=='零' && (s_tmp.substr(1,1)!='元' && s_tmp.substr(1,1)!='万' && s_tmp.substr(1,1)!='亿'))
s_chinese+=s_tmp.substr(0,1);
else if (s_tmp.substr(0,1)=='零' && (s_tmp.substr(1,1)=='元' || s_tmp.substr(1,1)=='万' || s_tmp.substr(1,1)=='亿'))
s_chinese+=s_tmp.substr(1,1);
}
//除去s_chinese中的"零零"
while(s_chinese.indexOf("零零")>0)
{
var pos=s_chinese.indexOf("零零");
s_chinese=s_chinese.substr(0,pos)+s_chinese.substr(pos+1,s_chinese.length);
}

//除去结尾的"零"
while(s_chinese.substr(s_chinese.length-1,s_chinese.length)=='零')
{
s_chinese=s_chinese.substr(0,s_chinese.length-1);
}
//除去"零元"
while(s_chinese.indexOf("零元")>0)
{
var pos=s_chinese.indexOf("零元");
s_chinese=s_chinese.substr(0,pos)+s_chinese.substr(pos+1,s_chinese.length);
}
//除去"零万"
while(s_chinese.indexOf("零万")>0)
{
var pos=s_chinese.indexOf("零万");
s_chinese=s_chinese.substr(0,pos)+s_chinese.substr(pos+1,s_chinese.length);
}
//除去"零亿"
while(s_chinese.indexOf("零亿")>0)
{
var pos=s_chinese.indexOf("零亿");
s_chinese=s_chinese.substr(0,pos)+s_chinese.substr(pos+1,s_chinese.length);
}
i=s_chinese.indexOf("亿万元");
if(i>=0)
s_chinese=s_chinese.substr(0,i+1)+s_chinese.substr(i+2,s_chinese.length);

i=s_chinese.indexOf("亿万零");
if(i>=0)
s_chinese=s_chinese.substr(0,i+1)+s_chinese.substr(i+2,s_chinese.length);

i=s_chinese.indexOf("亿万");
if(i>=0)
s_chinese=s_chinese.substr(0,i+1)+"零"+s_chinese.substr(i+2,s_chinese.length);
//如果是整元,要在大写金额后加"整"
if(s_chinese.substr(s_chinese.length - 1,1)=='元')
s_chinese=s_chinese+'整';
return s_chinese;
}
更简单的方法:
1.public String toRMB(double money) {
2. char[] s1 = {'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'};
3. char[] s4 = {'分', '角', '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万'};
4. String str = String.valueOf(Math.round(money * 100 + 0.00001));
5. String result = "";
6.
7. for (int i = 0; i < str.length(); i++) {
8. int n = str.charAt(str.length() - 1 - i) - '0';
9. result = s1[n] + "" + s4[i] + result;
10. }
11.
12. result = result.replaceAll("零仟", "零");
13. result = result.replaceAll("零佰", "零");
14. result = result.replaceAll("零拾", "零");
15. result = result.replaceAll("零亿", "亿");
16. result = result.replaceAll("零万", "万");
17. result = result.replaceAll("零元", "元");
18. result = result.replaceAll("零角", "零");
19. result = result.replaceAll("零分", "零");
20.
21. result = result.replaceAll("零零", "零");
22. result = result.replaceAll("零亿", "亿");
23. result = result.replaceAll("零零", "零");
24. result = result.replaceAll("零万", "万");
25. result = result.replaceAll("零零", "零");
26. result = result.replaceAll("零元", "元");
27. result = result.replaceAll("亿万", "亿");
28.
29. result = result.replaceAll("零$", "");
30. result = result.replaceAll("元$", "元整");
31.
32. return result;
33.}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值