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’相差48
int 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);
}
}
将浮点数转化为人民币读法字符串
最新推荐文章于 2022-03-19 15:06:17 发布