搜档网
当前位置:搜档网 › 中文金额的大写方式

中文金额的大写方式

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

试验要求:

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

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

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




public class chineseMoney{
private String number[]=

{"","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private String unit[]={"","拾","佰","仟"};
private String small[]={"角","分"};
//private String strNumber,strUnit,strAll;

//是否在number中
private boolean IsInNumber(String strNumber)
{
boolean inNumber=false;
for (int i=0;i<9;i++)
{
if (https://www.sodocs.net/doc/6b5752092.html,pareTo (number[i])==0) inNumber=true;
}
return inNumber;
}


private String SplitChineseNumber(int intUnit,String strInt)
{
int l=strInt.length ();
int j,k,zeorCountTemp=0;
String strUnit="",strNumber="",strAll="";

//判断在千万到万位 是否全为0,是的话,不返回“万”,返回“”;
boolean temp=false;
for (k=0;k{
String strTemp=strInt.substring(k,k+1);
int intTemp=Integer.parseInt(strTemp);

if (intTemp!=0) temp=true;
}
if (temp==false)
{
if (intUnit==5)return "";
}


int checkK=0;
//正式开始转换
for (k=0;k{
String strTemp=strInt.substring(k,k+1);
int intTemp=Integer.parseInt(strTemp);
strNumber= number[intTemp];

//j 从
j=l-1-k;

strUnit=unit[j];


//数值+单位
//如果数值=0,数值=“”
if (intTemp==0)
{
//
if (zeorCountTemp==0)
{
//单位=零
strUnit=strUnit.replace('拾','零');
strUnit=strUnit.replace('佰','零');
strUnit=strUnit.replace('仟','零');
}
else
{
//多零情况下,单位=“”
strUnit=strUnit.replaceAll("拾","");
strUnit=strUnit.replaceAll("佰","");
strUnit=strUnit.replaceAll("仟","");
}
zeorCountTemp++;
}
checkK=k;
strAll+=strNumber+strUnit;
}

return strAll;
}

private String onlyInt(int intInt)
{
String strInt;
strInt=String.valueOf(intInt);
int l=strInt.

length();

String strAll=""; //按照四位 一分隔 来计算
if (l>8)//亿


{
strAll+=this.SplitChineseNumber(9,strInt.substring(0,l-8))+"

亿";
strAll+=this.SplitChineseNumber(5,strInt.substring(l-8,l-4));
strAll+=this.SplitChineseNumber(1,strInt.substring(l-4,l))+"

元";
}
else if (l>4)//万 {
{ strAll+=this.SplitChineseNumber(5,strInt.substring(0,l-4));
strAll+=this.SplitChineseNumber(1,strInt.substring(l-4,l))+"

元";

}
else if (l>0)
{
strAll+=this.SplitChineseNumber(1,strInt)+"元";
}//
//
//
//
// 100101000
int checkL=strAll.length();

char strTemp2;
for (int k=1;k{
strTemp2=strAll.charAt(k);
if (strTemp2=='零')
{
//判断零的前后是否有数字,无数字则删除这个零
String strBeforeTemp=strAll.substring(k-1,k);
String strAfterTemp=strAll.substring(k+1,k+2);
if (!this.IsInNumber(strBeforeTemp)&&!this.IsInNumber

(strAfterTemp))
{
strBeforeTemp=strAll.substring(0,k);
strAfterTemp=strAll.substring(k+1,checkL);
strAll= strBeforeTemp+strAfterTemp;
break;
}

}
}

return strAll;

}

private String onlySmall(int intSmall)
{
String strNumber,strUnit,strAll;
strNumber="";strUnit="";strAll="";
String strSmall,strTemp;
strSmall=String.valueOf(intSmall);
int i;
if (intSmall>=10)
{
for (i=0;i{
strTemp=String.valueOf(intSmall).substring(i,i+1);
if (Integer.parseInt(strTemp)!=0)
{
strNumber=number[Integer.parseInt(strTemp)];
strUnit=small[i];
strAll+=strNumber+strUnit;
}
}
}
else
{
if (intSmall!=0)
{
strNumber=number[intSmall];
strUnit=small[1];
strAll+=strNumber+strUnit;
}
}

return strAll;
}

public String getChineseMoney(double number)
{
//四舍五入
number=(number*100+0.5)/100;

String strAll,strChineseInt,strChineseSmall,strZheng;;
int intInt,intSmall;
strChineseInt="";strChineseSmall="";strZheng="";

//整数部分
intInt=(int)( number*100/100);
if (intInt!=0)
{
strChineseInt=onlyInt(intInt);

}
//小数部分
double temp=(number-intInt)*100*100/100;
//对小数部分四舍五入
intSmall=(int)(temp*100+0.5)/100;
if (intSmall!=0)
{
strChineseSmall=onlySmall(intSmall);
}
else
{
strZheng="整";
}
strAll=strChineseInt+strChineseSmall+strZheng;
return strAll;
}
public static void main(String args[]) throws IOException
{
chineseMoney cm=new chineseMoney();
double money;
String strMoney,strChineseMoney;
strMoney="";
//读取
System.out.println("输入货币(四舍五入):");
BufferedReader cin = new BufferedReader(new InputStreamReader

(System.in));
strMoney = cin.readLine();
money=Double.parseDouble(strMoney);
//money=12346.465;//Double.parseDouble(strMoney);
strChineseMoney=cm.getChineseMoney(money);
System.out.println(strChineseMoney);
}

}

相关主题