java实现人民币数字转换成中文
来源:互联网 发布:mac dashboard是什么 编辑:程序博客网 时间:2024/06/06 02:17
public
class
test {
/**
* 人民币大写单位制
*/
private
static
HashMap<Integer, String> dws;
/**
* 数字对应的中文
*/
private
static
String[] jes;
// 初始化执行
static
{
dws =
new
HashMap<Integer, String>();
dws.put(-
2
,
"分"
);
dws.put(-
1
,
"角"
);
dws.put(
0
,
"元"
);
dws.put(
1
,
"拾"
);
dws.put(
2
,
"佰"
);
dws.put(
3
,
"仟"
);
dws.put(
4
,
"万"
);
//
dws.put(
5
,
"拾"
);
dws.put(
6
,
"佰"
);
dws.put(
7
,
"仟"
);
dws.put(
8
,
"亿"
);
//
dws.put(
9
,
"拾"
);
dws.put(
10
,
"佰"
);
dws.put(
11
,
"仟"
);
dws.put(
12
,
"万"
);
jes =
new
String[]{
"零"
,
"壹"
,
"贰"
,
"叁"
,
"肆"
,
"伍"
,
"陆"
,
"柒"
,
"捌"
,
"玖"
};
}
/**
* 数字转换人民币大写
* @param number 数字 不支持科学数字
* @return
*/
public
static
String chinese(String number){
StringBuffer su =
new
StringBuffer();
// 整数部分
number = delInvalidZero(number);
String str =
null
;
// 小数部分
String decimal =
null
;
if
(number.contains(
"."
)){
// 截取整数位
str = number.split(
"\\."
)[
0
];
decimal = number.split(
"\\."
)[
1
];
}
else
{
str = number;
}
// 判断是否存在整数位
if
(str.length()>
0
){
for
(
int
i =
0
; i < str.length() ; i++) {
String context = str.substring(i, i+
1
);
int
pow = str.length()-i-
1
;
Integer val = Integer.parseInt(context.toString());
// 获取中文单位
String sign = dws.get(pow);
// 获取中文数字
String name = jes[Integer.parseInt(context)];
if
(val==
0
){
if
(pow%
4
!=
0
){
// 删除单位
sign =
""
;
}
if
(i < str.length()-
1
){
Integer val1 = Integer.parseInt(str.substring(i+
1
, i+
2
));
if
(val==
0
&&val==val1){
name =
""
;
}
}
else
if
(i == str.length()-
1
){
name =
""
;
}
}
su.append(name+sign);
}
}
// 判断是否存在小数位
if
(decimal!=
null
){
str = decimal.substring(
0
,
1
);
if
(!
"0"
.equals(str)){
su.append(jes[Integer.parseInt(str)]+dws.get(-
1
));
}
if
(decimal.length()==
2
){
str = decimal.substring(
1
,
2
);
if
(!
"0"
.equals(str)){
su.append(jes[Integer.parseInt(str)]+dws.get(-
2
));
}
}
}
else
{
su.append(
"整"
);
}
return
su.toString();
}
/**
* 清理数字特殊字符
* @param str
* @return
*/
private
static
String delInvalidZero(String str){
if
(
"0"
.equals(str.substring(
0
,
1
))){
return
delInvalidZero(str.substring(
1
, str.length()));
}
else
if
(str.contains(
","
)){
return
delInvalidZero(str.replaceAll(
","
,
""
));
}
else
{
return
str;
}
}
public
static
void
main(String[] args) {
System.out.println(test.chinese(
"12.5"
));
}
}
阅读全文
0 0
- java实现人民币数字转换成中文
- Java代码实现数字转换中文大写及人民币大写
- 把人民币数字转换成中文大写
- 数字转换成中文人民币大写
- java实现人民币数字和大写转换
- java实现人民币数字转换中文大写的工具实例代码demo分享
- java中数字转换人民币
- 将人民币数字转换为中文大写
- 人民币,大写中文与数字之间转换
- Java人民币从数字形式转换成汉字(繁体)!
- 数字转换大写人民币的delphi实现
- 数字转换大写人民币的delphi实现
- 数字转换大写人民币的delphi实现
- 数字转换大写人民币的delphi实现
- 数字转换大写人民币的delphi实现
- 实现数字向人民币大写转换
- Java实现阿拉伯数字转换成中文大写数字,以及中文大写数字到阿拉伯数字的转换。
- Java实现阿拉伯数字转换成中文大写数字,以及中文大写数字到阿拉伯数字的转换
- lintcode 字符串查找(strStr) (Java)
- maven的settings.xml配置详解
- Android 事件总线EventBus
- 关于ListView加入HeaderView之后,点击条目时获得position参数移位的BUG修正
- NOIP 2011 Senior 3
- java实现人民币数字转换成中文
- caffe+windows+vs2015 (无GPU)环境配置
- TCP建立连接的三次握手过程
- UITextView中打开或禁用复制,剪切,选择,全选等功能
- 投影与三维视觉——本征矩阵和基础矩阵
- UIGeometry、UIDrawCall和UIWidget
- Tire树
- 推荐系统入门笔记
- .NET中通用增删改查