public class TranMoney {
public TranMoney() {
}
// public static void main(String ars[]){
// System.out.println(getChnmoney("11000.01"));
//
// }
public static String getChnmoney(String strNum) {
int n, m, k, i, j, q, p, s = 0;
int length, subLength, pstn;
String change, output, subInput, input = strNum;
output = "";
if (strNum.equals(""))
return null;
else {
length = input.length();
pstn = input.indexOf('.'); // 小数点的位置
if (pstn == -1) {
subLength = length;// 获得小数点前的数字
subInput = input;
} else {
subLength = pstn;
subInput = input.substring(0, subLength);
}
char[] array = new char[4];
char[] array2 = { '仟', '佰', '拾' };
char[] array3 = { '亿', '万', '元', '角', '分' };
n = subLength / 4;// 以千为单位
m = subLength % 4;
if (m != 0) {
for (i = 0; i < (4 - m); i++) {
subInput = '0' + subInput;// 补充首位的零以便处理
}
n = n + 1;
}
k = n;
for (i = 0; i < n; i++) {
p = 0;
change = subInput.substring(4 * i, 4 * (i + 1));
array = change.toCharArray();// 转换成数组处理
for (j = 0; j < 4; j++) {
output += formatC(array[j]);// 转换成中文
if (j < 3) {
output += array2[j];// 补进单位,当为零是不补(千百十)
}
p++;
}
if (p != 0)
output += array3[3 - k];// 补进进制(亿万元分角)
// 把多余的零去掉
String[] str = { "零仟", "零佰", "零拾" };
for (s = 0; s < 3; s++) {
while (true) {
q = output.indexOf(str[s]);
if (q != -1)
output = output.substring(0, q) + "零"
+ output.substring(q + str[s].length());
else
break;
}
}
while (true) {
q = output.indexOf("零零");
if (q != -1)
output = output.substring(0, q) + "零"
+ output.substring(q + 2);
else
break;
}
String[] str1 = { "零亿", "零万", "零元" };
for (s = 0; s < 3; s++) {
while (true) {
q = output.indexOf(str1[s]);
if (q != -1)
output = output.substring(0, q)
+ output.substring(q + 1);
else
break;
}
}
k--;
}
if (pstn != -1)// 小数部分处理
{
for (i = 1; i < length - pstn; i++) {
if (input.charAt(pstn + i) != '0') {
output += formatC(input.charAt(pstn + i));
output += array3[2 + i];
} else if (i < 2)
output += "零";
else
output += "";
}
}
if (output.substring(0, 1).equals("零"))
output = output.substring(1);
if (output.substring(output.length() - 1, output.length()).equals(
"零"))
output = output.substring(0, output.length() - 1);
if(output.indexOf("分")>0||output.indexOf("角")>0){
return output;
}else{
return output += "整";
}
}
}
public static String get3Eng(String strNum) {
String strEng = "";
String str[] = { "", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX",
"SEVEN", "EIGHT", "NINE" };
String str1[] = { "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN",
"FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN" };
String str2[] = { "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY",
"SEVENTY", "EIGHTY", "NINETY", "HUNDRED" };
int num = Integer.parseInt(strNum);
int b = num / 100;
int t = (num % 100) / 10;
int g = (num % 100) % 10;
if (b != 0) {
strEng = strEng + str[b] + " " + str2[9];
}
if (t == 0) {
if (g != 0) {
if (b != 0) {
strEng = strEng + " AND ";
}
strEng = strEng + str[g];
}
} else if (t == 1) {
if (b != 0) {
strEng = strEng + " AND ";
num = num % 100;
}
strEng = strEng + str1[num - 10];
} else if (t != 1) {
if (g != 0) {
if (b != 0) {
strEng = strEng + " AND ";
}
strEng = strEng + str2[t - 1] + "-" + str[g];
} else {
if (b != 0) {
strEng = strEng + " AND ";
}
strEng = strEng + str2[t - 1] + str[g];
}
}
return strEng;
}
public static String getCent(String strNum) {
String strEng = "";
String str[] = { "", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX",
"SEVEN", "EIGHT", "NINE" };
String str1[] = { "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN",
"FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN" };
String str2[] = { "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY",
"SEVENTY", "EIGHTY", "NINETY", "HUNDRED" };
String str3[] = { "CENTS", "", "DOLLARS", "", "HUNDRED", "THOUSAND",
"", "", "MILLION", "", "", "BILLION", "", "" };
if (strNum.equals(""))
return null;
else {
int length = strNum.length();
if (length != 3) {
return "输入的位数错误!";
}
int cent = Integer.parseInt(strNum.substring(1, 3));
if (cent == 0) {
return strEng;
}
if (cent < 10) {
strEng = str3[0] + " " + strEng + str[cent];
} else if (cent >= 10 && cent <= 19) {
strEng = str3[0] + " " + strEng + str1[cent - 10];
} else if (cent > 19) {
int jiao = cent / 10;
int fen = cent % 10;
if (fen != 0) {
strEng = str3[0] + " " + strEng + str2[jiao - 1] + "-"
+ str[fen];
} else {
strEng = str3[0] + " " + strEng + str2[jiao - 1] + str[fen];
}
}
return strEng;
}
}
public static String getEngmoney(String strNum) {
String strNumber = "";
String str3[] = { "CENTS", "", "DOLLARS", "", "HUNDRED", "THOUSAND",
"", "", "MILLION", "", "", "BILLION", "", "" };
String strEng = "";
strNumber = strNum;
int pointbz = strNumber.indexOf(".");
if (pointbz < 0) {
strNumber = strNumber + ".00";
} else if (pointbz > 0) {
int k = strNum.length() - pointbz;
if (k == 2) {
strNumber = strNumber + "0";
} else if (k == 1) {
strNumber = strNumber + "00";
}
}
int length = strNumber.length();
if (length > 16) {
return "您输入的值过大系统无法处理!";
}
String strb = "";
String strm = "";
String strq = "";
String stry = "";
String strf = "";
// 得到分
if (length == 3) {
strf = getCent(strNumber);
strEng = strEng + strf;
} else if (length > 3 && length < 7) {
stry = get3Eng(strNumber.substring(0, length - 3));
strf = getCent(strNumber.substring(length - 3, length));
strEng = strEng + stry + " " + str3[2];
if (!strf.equals("")) {
strEng = strEng + " AND " + strf;
}
} else if (length > 6 && length < 10) {
strq = get3Eng(strNumber.substring(0, length - 6));
stry = get3Eng(strNumber.substring(length - 6, length - 3));
strf = getCent(strNumber.substring(length - 3, length));
strEng = strEng + strq + " " + str3[5];
if (stry.equals("")) {
strEng = strEng + " " + stry;
} else {
strEng = strEng + " " + stry + " " + str3[2];
}
if (!strf.equals("")) {
strEng = strEng + " AND " + strf;
}
} else if (length > 9 && length < 13) {
strm = get3Eng(strNumber.substring(0, length - 9));
strq = get3Eng(strNumber.substring(length - 9, length - 6));
stry = get3Eng(strNumber.substring(length - 6, length - 3));
strf = getCent(strNumber.substring(length - 3, length));
strEng = strEng + strm + " " + str3[8];
if (!strq.equals("")) {
strEng = strEng + " " + strq + " " + str3[5];
}
if (!stry.equals("")) {
strEng = strEng + " " + stry + " " + str3[2];
} else {
strEng = strEng + " " + str3[2];
}
if (!strf.equals("")) {
strEng = strEng + " AND " + strf;
}
} else if (length > 12 && length < 16) {
strb = get3Eng(strNumber.substring(0, length - 12));
strm = get3Eng(strNumber.substring(length - 12, length - 9));
strq = get3Eng(strNumber.substring(length - 9, length - 6));
stry = get3Eng(strNumber.substring(length - 6, length - 3));
strf = getCent(strNumber.substring(length - 3, length));
strEng = strEng + strb + " " + str3[11];
if (!strm.equals("")) {
strEng = strEng + " " + strm + " " + str3[8];
}
if (!strq.equals("")) {
strEng = strEng + " " + strq + " " + str3[5];
}
if (!stry.equals("")) {
strEng = strEng + " " + stry + " " + str3[2];
} else {
strEng = strEng + " " + str3[2];
}
if (!strf.equals("")) {
strEng = strEng + " AND " + strf;
}
}
return strEng + " ONLY";
}
public static String formatC(char x) {
String a = "";
switch (x) {
case '0':
a = "零";
break;
case '1':
a = "壹";
break;
case '2':
a = "贰";
break;
case '3':
a = "叁";
break;
case '4':
a = "肆";
break;
case '5':
a = "伍";
break;
case '6':
a = "陆";
break;
case '7':
a = "柒";
break;
case '8':
a = "捌";
break;
case '9':
a = "玖";
break;
}
return a;
}
}
分享到:
相关推荐
【人民币转换】是一个常见的编程需求,特别是在金融和会计领域,涉及到财务报表、发票以及银行交易等场景。在中文环境中,小写的人民币金额通常用于日常计算和书写,而大写则是为了增强金额表述的清晰度,避免因数字...
这是我做的一个人民币转换程序,就是把数字转换成大写的,因为考虑的比较全面,所以代码有点多,不过,功能绝对全。没有bug 我是冰哥!
使用java编程实现将人民币大写转换为阿拉伯数字。本程序仅实现万元以下的人民币转换,输入数据必须以元结尾。
3. 人民币转换大写。 ### 1. 判断三角形并求面积 #### 类定义 首先定义一个名为`Triangle`的类,该类用于判断三个边长是否可以构成三角形,并计算该三角形的面积。 ```java public class Triangle { // 定义三个...
这个“人民币转换程序”就是为了解决这样的问题而设计的。 程序的核心功能是将输入的数字(可能是小写或阿拉伯数字)转化为规范的中文大写数字。在人民币的书写规则中,大写数字包括壹、贰、叁、肆、伍、陆、柒、捌...
这个"Rmb.rar_人民币 转换 java_人民币大写"的压缩包就是一个典型的例子,它包含了一个Java程序,用于将数字转换成符合中国金融规范的人民币大写形式。这种转换对于财务报表、发票开具等场景至关重要,因为它们要求...
### 小写人民币转换成大写人民币 在财务、会计以及正式文件中,为了防止篡改,经常需要将小写的阿拉伯数字金额转换为大写形式。这种转换在银行支票填写、合同金额书写等方面尤为常见。本文将详细介绍如何实现从小写...
根据提供的文件信息,本文将详细解释...综上所述,虽然提供的代码片段存在一些问题,但通过对原理的理解和适当的修改,可以成功实现小写到大写的人民币转换功能。这对于开发财务系统或其他涉及货币处理的应用非常有用。
本话题聚焦于“人民币转换为大写”,并且要考虑负数和保留两位小数的情况。在处理这样的需求时,开发者需要熟悉中国的货币表示规则以及相关的编程技巧。 首先,人民币的数字表示分为小写和大写两种形式。小写是常规...
### Excel中人民币转换为大写 #### 知识点概览 本文主要介绍如何在Excel中将阿拉伯数字表示的人民币金额自动转换成大写形式。该功能在制作财务报表、发票或其他需要大写金额的文档时非常实用。通过使用Excel公式...
人民币转换为大写
人民币转换操作,人民币大小写转换操作 好用
在Excel电子表格中,将小写人民币转换成大写是一项常见的财务操作,特别是在编制财务报表或填写支票时。以下是一些关于如何在Excel中实现这一转换的关键知识点: 1. **推荐公式1**: 这个公式首先检查数值是否为...
人民币转换问题 c++ 程序设计方法学 输入一串数字,转化成大写的人民币数字
设计和编写一个用于将人民币转换为等值的美元的程序,界面要求可以输入人民币的金额并可以得到转换后的结果。本实验使用了JAVA SWING中的容器、部件、布局管理器和部件事件处理方法,通过编写和调试程序,掌握了JAVA...
可将人民币转换成美元,直接输入人们币,点击转换,即可转换成美元
在JavaScript(JS)编程中,有时我们需要将数字格式的人民币金额转换为中文大写的表示方式,这在财务系统或者电商平台上十分常见。人民币大写转换主要用于财务报表、发票和银行单据,确保金额的准确性和规范化。下面...
C#人民币转换帮助类
根据提供的文件信息,本文将详细解释如何在MySQL中创建一个函数来实现人民币金额转换成大写数字的功能。此功能在财务系统中非常实用,尤其是在处理发票、账单等需要正式金额表述的场合。 ### MySQL人民币金额转大写...