技术开发 频道

JAVA应用: 浮点数转化为大写中文金额

  【IT168技术文档】

  读入一个浮点数值,将其转化为金额的中文大写方式.

  试验要求:

  当金额为整数时,只表示整数部分,省略小数部分,并添加"整"字.

  当金额中含有连续的0时,只需要一个"零"即可.

  10的表示方式.例如110--壹佰一拾元整,10---一拾元整

  --------------------------------------------------------------------------------

  1import java.io.*;   2class chineseMoney...{   3 private String number[]=...{"","","","","","","","","",""};   4 private String unit[]=...{"","","",""};   5 private String small[]=...{"",""};   6 //private String strNumber,strUnit,strAll;   7   8 //是否在number中   9 private boolean IsInNumber(String strNumber)   10 ...{   11 boolean inNumber=false;   12 for (int i=0;i<9;i++)   13 ...{   14 if (strNumber.compareTo (number[i])==0) inNumber=true;   15 }   16 return inNumber;   17 }   18   19   20 private String SplitChineseNumber(int intUnit,String strInt)   21 ...{   22 int l=strInt.length ();   23 int j,k,zeorCountTemp=0;   24 String strUnit="",strNumber="",strAll="";   25   26 //判断在千万到万位 是否全为0,是的话,不返回“万”,返回“”;   27 boolean temp=false;   28 for (k=0;k29 ...{   30 String strTemp=strInt.substring(k,k+1);   31 int intTemp=Integer.parseInt(strTemp);   32   33 if (intTemp!=0) temp=true;   34 }   35 if (temp==false)   36 ...{   37 if (intUnit==5)return "";   38 }   39   40   41 int checkK=0;   42 //正式开始转换   43 for (k=0;k44 ...{   45 String strTemp=strInt.substring(k,k+1);   46 int intTemp=Integer.parseInt(strTemp);   47 strNumber= number[intTemp];   48   49 //j 从   50 j=l-1-k;   51   52 strUnit=unit[j];   53   54   55 //数值+单位   56 //如果数值=0,数值=“”   57 if (intTemp==0)   58 ...{   59 //   60 if (zeorCountTemp==0)   61 ...{   62 //单位=零   63 strUnit=strUnit.replace('''''''','''''''');   64 strUnit=strUnit.replace('''''''','''''''');   65 strUnit=strUnit.replace('''''''','''''''');   66 }   67 else   68 ...{   69 //多零情况下,单位=“”   70 strUnit=strUnit.replaceAll("","");   71 strUnit=strUnit.replaceAll("","");   72 strUnit=strUnit.replaceAll("","");   73 }   74 zeorCountTemp++;   75 }   76 checkK=k;   77 strAll+=strNumber+strUnit;   78 }   79   80 return strAll;   81 }   82   83 private String onlyInt(int intInt)   84 ...{   85 String strInt;   86 strInt=String.valueOf(intInt);   87 int l=strInt.length();   88   89 String strAll="";   90 //按照四位 一分隔 来计算   91 if (l>8)//亿   92 ...{   93 strAll+=this.SplitChineseNumber(9,strInt.substring(0,l-8))+"亿";   94 strAll+=this.SplitChineseNumber(5,strInt.substring(l-8,l-4));   95 strAll+=this.SplitChineseNumber(1,strInt.substring(l-4,l))+"";   96 }   97 else if (l>4)//   98 ...{   99 strAll+=this.SplitChineseNumber(5,strInt.substring(0,l-4));   100 strAll+=this.SplitChineseNumber(1,strInt.substring(l-4,l))+"";   101   102 }   103 else if (l>0)   104 ...{   105 strAll+=this.SplitChineseNumber(1,strInt)+"";   106 }   107//   108//   109//   110//   111// 100101000   112 int checkL=strAll.length();   113   114 char strTemp2;   115 for (int k=1;k116 ...{   117 strTemp2=strAll.charAt(k);   118 if (strTemp2=='''''''')   119 ...{   120 //判断零的前后是否有数字,无数字则删除这个零   121 String strBeforeTemp=strAll.substring(k-1,k);   122 String strAfterTemp=strAll.substring(k+1,k+2);   123 if (!this.IsInNumber(strBeforeTemp)&&!this.IsInNumber(strAfterTemp))   124 ...{   125 strBeforeTemp=strAll.substring(0,k);   126 strAfterTemp=strAll.substring(k+1,checkL);   127 strAll= strBeforeTemp+strAfterTemp;   128 break;   129 }   130   131 }   132 }   133   134 return strAll;   135   136 }   137   138 private String onlySmall(int intSmall)   139 ...{   140 String strNumber,strUnit,strAll;   141 strNumber="";strUnit="";strAll="";   142 String strSmall,strTemp;   143 strSmall=String.valueOf(intSmall);   144 int i;   145 if (intSmall>=10)   146 ...{   147 for (i=0;i148 ...{   149 strTemp=String.valueOf(intSmall).substring(i,i+1);   150 if (Integer.parseInt(strTemp)!=0)   151 ...{   152 strNumber=number[Integer.parseInt(strTemp)];   153 strUnit=small[i];   154 strAll+=strNumber+strUnit;   155 }   156 }   157 }   158 else   159 ...{   160 if (intSmall!=0)   161 ...{   162 strNumber=number[intSmall];   163 strUnit=small[1];   164 strAll+=strNumber+strUnit;   165 }   166 }   167   168 return strAll;   169 }   170   171 public String getChineseMoney(double number)   172 ...{   173 //四舍五入   174 number=(number*100+0.5)/100;   175   176 String strAll,strChineseInt,strChineseSmall,strZheng;;   177 int intInt,intSmall;   178 strChineseInt="";strChineseSmall="";strZheng="";   179   180 //整数部分   181 intInt=(int)( number*100/100);   182 if (intInt!=0)   183 ...{   184 strChineseInt=onlyInt(intInt);   185 }   186 //小数部分   187 double temp=(number-intInt)*100*100/100;   188 //对小数部分四舍五入   189 intSmall=(int)(temp*100+0.5)/100;   190 if (intSmall!=0)   191 ...{   192 strChineseSmall=onlySmall(intSmall);   193 }   194 else   195 ...{   196 strZheng="";   197 }   198 strAll=strChineseInt+strChineseSmall+strZheng;   199 return strAll;   200 }   201 public static void main(String args[]) throws IOException   202 ...{   203 chineseMoney cm=new chineseMoney();   204 double money;   205 String strMoney,strChineseMoney;   206 strMoney="";   207 //读取   208 System.out.println("输入货币(四舍五入):");   209 BufferedReader cin = new BufferedReader(new InputStreamReader( System.in));   210 strMoney = cin.readLine();   211 money=Double.parseDouble(strMoney);   212 //money=12346.465;//Double.parseDouble(strMoney);   213 strChineseMoney=cm.getChineseMoney(money);   214 System.out.println(strChineseMoney);   215 }   216}
0
相关文章