人民币读法的java程序_Java浮点数转人民币读法
packagetheTest;public classNumToRmb {private String[] hanArr={"零","壹","貳","叁","肆","伍","陸","柒","捌","玖"};private String[] unitArr={"仟","佰","拾"};/*** 把一個浮點數分解成整數部分和小數部分字符串
*@paramnum 需要被分解的浮點數
*@return分解出來的整數部分和小數部分,第1個數組元素是整數部分,第2個數組元素是小數部分。*/
private String[] divide(doublenum){//將一個浮點數強制轉換為long型,即得到它的整數部分
long zheng=(long)num;//浮點數減去整數部分,得到小數部分,小數部分乘以100取整得到兩位小數
long xiao=Math.round((num-zheng)*100);//這里使用兩種方法將整數轉換為字符串
return new String[]{String.valueOf(zheng),xiao+""};
}/*** 將整數分成4個數字為一組的字符串處理,轉化成大寫數字再將它們連接起來,得到最終的人民幣讀法
*@paramnum 需要被轉化為大寫數字的浮點數
*@return返回整個數字的人民幣讀法*/
private String conHanStr(doublenum){//存儲整數結果、小數結果
String resZheng="";
String resXiao="";//存儲最終結果
String result="";//分別存儲整數部分和小數部分字符串
String zhengStr=divide(num)[0];
String xiaoStr=divide(num)[1];/*小數部分的處理*/
if(xiaoStr.length()==1){
xiaoStr="0"+xiaoStr;
}
resXiao=xiao2Han(xiaoStr);/*整數部分的處理*/
//記錄字符串個數,是第幾個數組
int countArr=0;
String tempStr="";//記錄位數
int countNum=0;for(int i=zhengStr.length()-1;i>=0;i--){
countNum++;
tempStr=zhengStr.charAt(i)+tempStr;if(i-1<0){//i已經是最后一個數字,不夠的位,補0
while(tempStr.length()<4){
tempStr="0"+tempStr;
}
countArr++;
resZheng=zheng2Han(countArr,tempStr)+" "+resZheng;
}else{if(countNum==4){
countArr++;
resZheng=zheng2Han(countArr,tempStr)+" "+resZheng;
countNum=0;
tempStr="";
}
}
}//去掉開頭的零
if(resZheng.charAt(0)==‘零‘){
resZheng=resZheng.substring(1,resZheng.length());
}/*整數和小數的連接*/
//表示整數部分為0
if(resZheng.charAt(0)==‘元‘){
resZheng="零"+resZheng;
}
result=resZheng+resXiao;returnresult;
}/*** 每個4位的整數組轉化為大寫的數字
*@paramcount 記錄是第幾個數組(1-3)
*@paramstr 需要被轉換的數組
*@return返回該數組人民幣讀法*/
private String zheng2Han(intcount,String str){
String result="";for(int j=0;j<4;j++){int tempNum=str.charAt(j)-48;if(tempNum!=0){if(j!=3){
result+=hanArr[tempNum]+unitArr[j];
}else{
result+=hanArr[tempNum];
}
}else{if((j-1<0)||(str.charAt(j-1)-48!=0)){
result+=hanArr[tempNum];
}
}
}//去掉末尾的零
if(result.charAt(result.length()-1)==‘零‘){
result=result.substring(0, result.length()-1);
}//去零之后添加“億、萬、元、角、分”。
switch(count){case 1:
result+="元";break;case 2:
result+="萬";break;case 3:
result+="億";break;default:
System.out.println("僅支持不大于9999,9999,9999.99的數字!");return "";
}returnresult;
}/*** 小數轉化為大寫的數字
*@paramstr 需要被轉換的數組
*@return返回該小數人民幣讀法*/
privateString xiao2Han(String str){
String result="";if(!str.equals("00")){for(int i=0;i<2;i++){int tempNum=str.charAt(i)-48;if((tempNum!=0)&&(i==0)){
result+=hanArr[tempNum]+"角";
}if((tempNum!=0)&&(i==1)){
result+=hanArr[tempNum]+"分";
}
}
}returnresult;
}/*** 主函數
*@paramargs*/
public static voidmain(String[] args) {
NumToRmb nr=newNumToRmb();
System.out.println(nr.conHanStr((double)12030060078.95));
}
}
總結
以上是生活随笔為你收集整理的人民币读法的java程序_Java浮点数转人民币读法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言对stm32f103程序,STM3
- 下一篇: java获取对象的子_java – 如何