001 |
package com.phyl.util; |
002 |
import java.util.HashMap; |
003 |
/** |
004 |
*
数字金额转换成中文大写金额 |
005 |
*
@author ftpeng |
006 |
* |
007 |
*/ |
008 |
public class ChineseConvert
{ |
009 |
|
010 |
/** |
011 |
*
人民币大写单位制 |
012 |
*/ |
013 |
private static HashMap<Integer,
String> dws; |
014 |
|
015 |
/** |
016 |
*
数字对应的中文 |
017 |
*/ |
018 |
private static String[]
jes; |
019 |
|
020 |
//
初始化执行 |
021 |
static{ |
022 |
dws
= new HashMap<Integer,
String>(); |
023 |
dws.put(-2, "分"); |
024 |
dws.put(-1, "角"); |
025 |
dws.put(0, "元"); |
026 |
dws.put(1, "拾"); |
027 |
dws.put(2, "佰"); |
028 |
dws.put(3, "仟"); |
029 |
dws.put(4, "万");// |
030 |
dws.put(5, "拾"); |
031 |
dws.put(6, "佰"); |
032 |
dws.put(7, "仟"); |
033 |
dws.put(8, "亿");// |
034 |
dws.put(9, "拾"); |
035 |
dws.put(10, "佰"); |
036 |
dws.put(11, "仟"); |
037 |
dws.put(12, "万"); |
038 |
jes
= new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; |
039 |
} |
040 |
|
041 |
/** |
042 |
*
数字转换人民币大写 |
043 |
*
@param number 数字 不支持科学数字 |
044 |
*
@return |
045 |
*/ |
046 |
public static String
chinese(String number){ |
047 |
StringBuffer
su = new StringBuffer(); |
048 |
//
整数部分 |
049 |
number
= delInvalidZero(number); |
050 |
String
str = null; |
051 |
//
小数部分 |
052 |
String
decimal = null; |
053 |
if(number.contains(".")){ |
054 |
//
截取整数位 |
055 |
str
= number.split("\\.")[0]; |
056 |
decimal
= number.split("\\.")[1]; |
057 |
}else{ |
058 |
str
= number; |
059 |
} |
060 |
//
判断是否存在整数位 |
061 |
if(str.length()>0){ |
062 |
for (int i
= 0;
i < str.length() ; i++) { |
063 |
String
context = str.substring(i, i+1); |
064 |
int pow
= number.length()-4-i; |
065 |
Integer
val = Integer.parseInt(context.toString()); |
066 |
//
获取中文单位 |
067 |
String
sign = dws.get(pow); |
068 |
//
获取中文数字 |
069 |
String
name = jes[Integer.parseInt(context)]; |
070 |
if(val==0){ |
071 |
if(pow%4!=0){//
删除单位 |
072 |
sign
= ""; |
073 |
} |
074 |
if(i
< str.length()-1){ |
075 |
Integer
val1 = Integer.parseInt(str.substring(i+1,
i+2)); |
076 |
if(val==0&&val==val1){ |
077 |
name
= ""; |
078 |
} |
079 |
}else if(i
== str.length()-1){ |
080 |
name
= ""; |
081 |
} |
082 |
} |
083 |
su.append(name+sign); |
084 |
} |
085 |
} |
086 |
//
判断是否存在小数位 |
087 |
if(decimal!=null){ |
088 |
str
= decimal.substring(0,1); |
089 |
if(!"0".equals(str)){ |
090 |
su.append(jes[Integer.parseInt(str)]+dws.get(-1)); |
091 |
} |
092 |
str
= decimal.substring(1,2); |
093 |
if(!"0".equals(str)){ |
094 |
su.append(jes[Integer.parseInt(str)]+dws.get(-2)); |
095 |
} |
096 |
}else{ |
097 |
su.append("整"); |
098 |
} |
099 |
return su.toString(); |
100 |
} |
101 |
|
102 |
/** |
103 |
*
清理第一个字段等于0的无效字符 |
104 |
*
@param str |
105 |
*
@return |
106 |
*/ |
107 |
private static String
delInvalidZero(String str){ |
108 |
if("0".equals(str.substring(0, 1))){ |
109 |
return delInvalidZero(str.substring(1,
str.length())); |
110 |
}else{ |
111 |
return str; |
112 |
} |
113 |
} |
114 |
|
115 |
public static void main(String[]
args) { |
116 |
System.out.println(ChineseConvert.chinese("000010001.15")); |
117 |
} |
118 |
} |
1万+

被折叠的 条评论
为什么被折叠?



