将浮点数转化为人民币读法字符串

来源:互联网 发布:较量无声 知乎 编辑:程序博客网 时间:2024/05/16 19:44
import java.util.Arrays;class  Num2Rmb{private String [] hanArr=new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};private String [] unitArr=new String[]{"十","百","千"};/**把一个浮点数转化为整数部分和小数部分,小数部分保留2位@param num 需要分割的浮点数@return 分解出来的整数和小数,分别放在数组的第一位和第二位*/private String[] divide(double num){long zheng=(long)num;long xiao=Math.round((num-zheng)*100);return new String[]{zheng+"",String.valueOf(xiao/10),String.valueOf(xiao%10)};}/**把一个四位数的数字字符串转化为汉字字符串@param num 所给出的四位数的数字字符串@return 四位数的数字字符串所转化成的汉字字符串*/public String ToHanStr(String numStr){String result="";int len=numStr.length();for(int i=0;i<len;i++){//数字1和字符‘1’相差48int num=numStr.charAt(i)-48;//若不为0且不为最后一个数if(i!=len-1&&num!=0){result+=hanArr[num]+unitArr[len-2-i];}//否则不加单位else{result+=hanArr[num];}}return result;}/* * 将特定的数字转化为多个长度为4的数组 */private String[] ToLaw(String number){int x=(int)number.length()/4;String []a=new String[x+1];for(int i=0;i<a.length;i++){a[i]="";}for(int i=0;i<number.length();i++){a[(i/4)]+=number.charAt(i);}return a;}/* * 将一个数字合法的转化为人民币的形式 */public void PrintAsRmb(double num){String[] y={"",""};y=divide(num);String numStr=y[0];String []x=new String[(int)numStr.length()/4+1];x=ToLaw(numStr);for(int i=0;i<x.length;i++){System.out.print(ToHanStr(x[i]));if(x.length==3){if(i==0)System.out.print("亿");else if(i==1)System.out.print("万");}if(x.length==2){if(i==0)System.out.print("万");}}System.out.print("元");System.out.print(ToHanStr(y[1])+"角");System.out.print(ToHanStr(y[2])+"分");}public static void main(String[] args) {Num2Rmb a=new Num2Rmb();/*System.out.println(Arrays.toString(a.divide(43252344.3242)));System.out.println(a.ToHanStr("5109"));String x[]=a.ToLaw("435432");*/a.PrintAsRmb(33543345543.23);}}

0 0
原创粉丝点击