讲金额(数字)转换成中文大写
来源:互联网 发布:期刊在线阅读系统源码 编辑:程序博客网 时间:2024/04/28 20:01
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
}
举报
- 讲金额(数字)转换成中文大写
- 使用 JAVA 将数字金额转换成大写中文金额
- PHP 数字金额转换成中文大写金额的函数
- 数字金额转中文大写金额 - 数字大写转换
- 数字转换成大写金额
- 数字金额转换成大写
- 数字转换成大写金额
- 数字转换成大写金额
- 数字转换成大写金额
- 数字转换成大写金额
- 小写数字金额,转换成大写中文,绝无错误
- 如何把数字金额转换成中文大写
- javascript数字转换成中文大写金额函数
- 将数字转换成中文金额的大写形式
- js 数字金额大小写转换成中文大写
- 金额从数字转换成中文汉字大写的实现
- Java中实现数字金额转换成中文大写
- 数字金额转换成大写金额
- h264码流概述
- delphi list index out of bounds 诡异现象
- linux命令大全
- stardict 安装配置
- centos6.4下让oracle开机启动
- 讲金额(数字)转换成中文大写
- 今天奥特曼结婚了啊,了不起
- Android 启动性能优化 - kernel篇
- C++开发的论坛系统 - BBS
- Vlc控件接口
- java调用matlab
- android OSS 返回结果分析
- 【nagios】监控mysql主从复制
- Wince程序内存和存储内存