`
cqh520llr
  • 浏览: 506097 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

人民币小写转大写

 
阅读更多
人民币小写转大写
--亮点:(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.}




分享到:
评论

相关推荐

    JS实现人民币小写转大写

    在JavaScript编程中,有时我们需要将人民币的数字金额(小写)转换为中文的大写形式,以便于财务报表或发票的规范书写。这个过程涉及到字符映射、数字处理以及字符串操作等多个知识点。以下是对这个主题的详细说明:...

    人民币小写转大写VB代码

    ### 知识点一:人民币小写转大写的背景及意义 在财务领域中,经常需要将数字金额转换为汉字大写形式,尤其是在开具发票、签署合同等正式场合下。这种转换有助于提高数据的安全性和防伪性,避免因数字篡改而产生的...

    人民币小写转大写,方便大家

    人民币小写转大写人民币小写转大写人民币小写转大写

    人民币小写转大写dll

    "人民币小写转大写dll" 是一个特定的DLL文件,其功能专注于将人民币金额从小写形式转换为大写形式,这是在金融和会计软件中常见的需求,因为在中国,正式的财务记录通常要求金额以大写汉字表示,以防止篡改和提高...

    人民币小写转大写的程序.rar

    "人民币小写转大写的程序"就是一个这样的解决方案,用于将诸如“123456.78”这样的金额转换成对应的汉字表示,如“壹拾贰万叁仟肆佰伍拾陆元柒角捌分”。 这个程序通常会涉及以下知识点: 1. **字符串处理**:程序...

    人民币金额小写转大写

    MFC制作的人民币小写金额转化大写金额,方便出差回来时报账填写账单大写RMB使用,欢迎下载

    android安卓人民币小写转大写程序

    android安卓人民币小写转大写程序APK,可下载到手机安装,以后写人民币大写就很方便啦

    人民币小写转大写程序源码

    人民币小写转大写,符合财务规则,1、汉字大写数字金额如零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿等,一律用正楷或者行书体书写,不得用0、一、二、三、四、五、六、七、八、九、十等简化字代替...

    人民币小写转大写(整数支持26位,小数精度6位)

    在IT行业中,尤其是在财务软件开发或者报表处理领域,人民币小写转大写是一个常见的需求。这个需求主要源于中国的金融法规,因为正式的财务文件、发票和银行单据通常要求金额以大写汉字表示,以避免因数字书写不清或...

    47 人民币小写转大写.rar

    在这个"47 人民币小写转大写.rar"压缩包中,我们很可能找到一个关于如何将人民币金额的小写形式转换为大写的Delphi代码示例或工具。在金融领域,人民币金额的大写形式是法定的会计标准,用于防止因为数字混淆而引发...

    人民币小写转大写自己编的

    这个“人民币小写转大写自己编的”项目提供了一种用VB(Visual Basic)实现的解决方案,帮助用户将人民币金额的小写形式转换为规范的大写形式。在财务和会计领域,这种转换尤其重要,因为大写数字可以防止因笔误或...

    人民币小写转大写(非常适合银行等财会部门使用)

    综上所述,人民币小写转大写是财务工作中的一项基本技能,通过遵循特定的规则并利用专用工具,如"RMB.exe",我们可以确保在处理人民币金额时的精确性和合规性。在日常工作中,熟练掌握这一技能不仅能提高工作效率,...

    人民币小写转大写 java

    这是我写的人民币小写转大写的文档,刚刚学java,希望大家指教。

    C++Builder 6 人民币小写转大写

    在C++Builder 6中实现人民币小写转大写的程序,主要涉及以下几个知识点: 1. **字符串操作**:首先,我们需要对输入的人民币小写金额进行处理,这通常涉及到字符串的读取、分割和拼接。C++Builder 6提供了字符串类...

    jsp页面人民币小写转大写

    "jsp页面人民币小写转大写"这个话题就是其中之一。在处理金融数据时,为了保证准确性和规范性,通常会将金额从小写的阿拉伯数字转换为大写的汉字数字,这在财务报表、发票等正式文档中尤其常见。在JSP(JavaServer ...

Global site tag (gtag.js) - Google Analytics