金额的大写转换
来源:互联网 发布:最新java面试题及答案 编辑:程序博客网 时间:2024/05/16 02:11
决定要做一个家庭财务记账的小软件,正在段准备阶段,昨天从网上看了一些C++的关于金额大写的转换,我只是用java改写了一下,想熟悉一下算法,已经好久没有编程了,静下心来做已经很难了.
做毕业设计那会,天天java api找了好多次,现在可能连hellworld也做不出来了,人正在一点点地颓废
不想颓废 所以有的时候还是要一点点看看的
1 public class Money {
2 public String convertBigMoney(double dMoney) {
3 String strMoney = "" + dMoney;
4 String strUnit = "元拾佰仟万拾佰仟亿拾佰仟";
5 String strNumber = "零壹贰叁肆伍陆柒捌玖";
6 String strOtherUnit = "整角分";
7 String strReturnValue = "";
8 int nLength = strMoney.length();
9 int nPos = strMoney.indexOf(".") < 0 ? nLength : strMoney.indexOf(".");
10 int nCount = 0;
11 boolean bZero = false;
12 boolean bNeedLevel = false; // 对段的识别,用于是否需要出现段名,如亿,万等
13 // 对整数部份进行反相识别处理
14 for (int i = nPos - 1; i >= 0; i--) {
15 char ch = strMoney.charAt(i);
16 if (nCount % 4 == 0 && nCount > 0) {
17 // 如果处理的数字为第四位(万),或第八位(亿)等,则要求置段
18 bNeedLevel = true;
19 }
20 if (ch == '0') {
21 // 只对拾佰仟位的0进行识别,主要考虑到拾的特殊性,即如10读壹拾,不会读壹拾零
22 if (nCount % 4 != 0)
23 bZero = true;
24 } else {
25 String strTemp = strReturnValue;
26 strReturnValue = strNumber.substring(ch - 48, ch - 47);
27 if (nCount > 0) {
28 strReturnValue += strUnit.substring(nCount, nCount + 1);
29 if (nCount % 4 != 0 && bNeedLevel) {
30 strReturnValue += strUnit.substring((int) (nCount / 4),
31 (int) (nCount / 4) + 1);
32 }
33 bNeedLevel = false;
34 }
35 if (bZero) {
36 // 只有比当前处理的位要低中有数字才补零
37 if (strTemp != "")
38 strReturnValue += strNumber.substring(0, 1);
39 bZero = false;
40 }
41 strReturnValue += strTemp;
42 }
43 nCount++;
44 }
45 strReturnValue += strUnit.substring(0, 1);
46 boolean bAllZero = true;
47 // 小数点后面的处理
48 if (nPos < nLength) {
49 if (nLength > 2)
50 nLength = 2;
51 for (int i = 0; i < nLength; i++)
52 if (strMoney.charAt(nPos + i + 1) != '0')
53 bAllZero = false;
54 }
55 if (bAllZero) {
56 strReturnValue += strOtherUnit.substring(0, 1);
57 } else {
58 // 对分角的处理
59 for (int i = 0; i < nLength; i++) {
60 char ch = strMoney.charAt(nPos + 1 + i);
61 if (ch == '0' && i > 0) {
62 } else {
63 strReturnValue += strNumber.substring(ch - 48, ch - 47);
64 if (ch != '0')
65 strReturnValue += strOtherUnit.substring(i + 1, i + 2);
66 }
67 }
68 }
69 return strReturnValue;
70 }
71
72 /**
73 * @param args
74 */
75 public static void main(String[] args) {
76 // TODO 自动生成方法存根
77 Money m =new Money();
78 double nMoney =1230012.123;
79 String strMoney;
80 strMoney=m.convertBigMoney(nMoney);
81 System.out.print(strMoney);
82 }
83
84 }
做毕业设计那会,天天java api找了好多次,现在可能连hellworld也做不出来了,人正在一点点地颓废
不想颓废 所以有的时候还是要一点点看看的
1 public class Money {
2 public String convertBigMoney(double dMoney) {
3 String strMoney = "" + dMoney;
4 String strUnit = "元拾佰仟万拾佰仟亿拾佰仟";
5 String strNumber = "零壹贰叁肆伍陆柒捌玖";
6 String strOtherUnit = "整角分";
7 String strReturnValue = "";
8 int nLength = strMoney.length();
9 int nPos = strMoney.indexOf(".") < 0 ? nLength : strMoney.indexOf(".");
10 int nCount = 0;
11 boolean bZero = false;
12 boolean bNeedLevel = false; // 对段的识别,用于是否需要出现段名,如亿,万等
13 // 对整数部份进行反相识别处理
14 for (int i = nPos - 1; i >= 0; i--) {
15 char ch = strMoney.charAt(i);
16 if (nCount % 4 == 0 && nCount > 0) {
17 // 如果处理的数字为第四位(万),或第八位(亿)等,则要求置段
18 bNeedLevel = true;
19 }
20 if (ch == '0') {
21 // 只对拾佰仟位的0进行识别,主要考虑到拾的特殊性,即如10读壹拾,不会读壹拾零
22 if (nCount % 4 != 0)
23 bZero = true;
24 } else {
25 String strTemp = strReturnValue;
26 strReturnValue = strNumber.substring(ch - 48, ch - 47);
27 if (nCount > 0) {
28 strReturnValue += strUnit.substring(nCount, nCount + 1);
29 if (nCount % 4 != 0 && bNeedLevel) {
30 strReturnValue += strUnit.substring((int) (nCount / 4),
31 (int) (nCount / 4) + 1);
32 }
33 bNeedLevel = false;
34 }
35 if (bZero) {
36 // 只有比当前处理的位要低中有数字才补零
37 if (strTemp != "")
38 strReturnValue += strNumber.substring(0, 1);
39 bZero = false;
40 }
41 strReturnValue += strTemp;
42 }
43 nCount++;
44 }
45 strReturnValue += strUnit.substring(0, 1);
46 boolean bAllZero = true;
47 // 小数点后面的处理
48 if (nPos < nLength) {
49 if (nLength > 2)
50 nLength = 2;
51 for (int i = 0; i < nLength; i++)
52 if (strMoney.charAt(nPos + i + 1) != '0')
53 bAllZero = false;
54 }
55 if (bAllZero) {
56 strReturnValue += strOtherUnit.substring(0, 1);
57 } else {
58 // 对分角的处理
59 for (int i = 0; i < nLength; i++) {
60 char ch = strMoney.charAt(nPos + 1 + i);
61 if (ch == '0' && i > 0) {
62 } else {
63 strReturnValue += strNumber.substring(ch - 48, ch - 47);
64 if (ch != '0')
65 strReturnValue += strOtherUnit.substring(i + 1, i + 2);
66 }
67 }
68 }
69 return strReturnValue;
70 }
71
72 /**
73 * @param args
74 */
75 public static void main(String[] args) {
76 // TODO 自动生成方法存根
77 Money m =new Money();
78 double nMoney =1230012.123;
79 String strMoney;
80 strMoney=m.convertBigMoney(nMoney);
81 System.out.print(strMoney);
82 }
83
84 }
- 金额的大写转换
- Dephi将金额转换的大写金额
- 大写的金额转换问题
- 数字金额的大写转换
- 数字转换大写金额的实现
- 金额转换中文大写的VBA实现
- 数字到大写金额的转换C++
- 数字到大写金额的转换C
- 数字到大写金额的转换Java
- java数字到大写金额的转换
- 简单对金额大写转换的实现
- 将小写的金额转换成中文的大写金额
- 小写金额转换成大写金额的函数
- 小写金额转换成大写金额的存储过程
- 将小写金额转换成中文大写金额的方法
- 把金额转换成汉字大写金额的Java代码
- 将小写金额转换为中文大写金额的类
- PHP 数字金额转换成中文大写金额的函数
- 路由器、HUB、交换机是一个东西吗?
- javascript的调试工具
- 关于S60 3rd资源本地化的实现
- 优美的祝词
- STRATEGY(策略)——对象行为模式
- 金额的大写转换
- Struts+Hibernate开发实践 分页的实现
- XP下安装SQL2000企业版
- 国内外信息安全研究现状及发展趋势[转载自Wendy]另外一篇:Dengguo Feng国内外信息安全研究现状及发展趋势
- Mac地址全了解- -
- .NET框架下使用双缓冲技术绘图
- 程序优化总结--转自晕船的水手
- 实例解析C++/CLI线程之多任务
- 美国信息安全风险评估工作流程详述