早教吧作业答案频道 -->其他-->
JAVA将数字转表示成相应的钱比如说数字123450000就需要表示成1亿2千3百4十5万方法怎么写2楼的朋友,如果是12345.00的时候,显示的是1万2千3百4拾5元0角0分
题目详情
JAVA将数字转表示成相应的钱
比如说 数字123450000 就需要表示成1亿2千3百4十5万 方法怎么写
2楼的朋友,如果是12345.00的时候,显示的是1万2千3百4拾5元0角0分
比如说 数字123450000 就需要表示成1亿2千3百4十5万 方法怎么写
2楼的朋友,如果是12345.00的时候,显示的是1万2千3百4拾5元0角0分
▼优质解答
答案和解析
public class ShuceUtils {
/**
* 将数字转换成中文表示
* @param smallmoney double
* @return String
*/
public static String TranslateMoneyToChn(double smallmoney) {
String value = String.valueOf(smallmoney);
if (null == value || "".equals(value.trim()))
return "零";
String strCheck, strArr, strFen, strDW, strNum, strBig, strNow;
double d = 0;
try {
d = Double.parseDouble(value);
}
catch (Exception e) {
return "数据" + value + "非法!";
}
strCheck = value + ".";
int dot = strCheck.indexOf(".");
if (dot > 12) {
return "数据" + value + "过大,无法处理!";
}
try {
int i = 0;
strBig = "";
strDW = "";
strNum = "";
long intFen = Math.round(d * 100);
strFen = String.valueOf(intFen);
int lenIntFen = strFen.length();
while (lenIntFen != 0) {
i++;
switch (i) {
case 1:
strDW = "分";
break;
case 2:
strDW = "角";
break;
case 3:
strDW = "圆";
break;
case 4:
strDW = "拾";
break;
case 5:
strDW = "佰";
break;
case 6:
strDW = "仟";
break;
case 7:
strDW = "万";
break;
case 8:
strDW = "拾";
break;
case 9:
strDW = "佰";
break;
case 10:
strDW = "仟";
break;
case 11:
strDW = "亿";
break;
case 12:
strDW = "拾";
break;
case 13:
strDW = "佰";
break;
case 14:
strDW = "仟";
break;
}
switch (strFen.charAt(lenIntFen - 1)) { //选择数字
case '1':
strNum = "壹";
break;
case '2':
strNum = "贰";
break;
case '3':
strNum = "叁";
break;
case '4':
strNum = "肆";
break;
case '5':
strNum = "伍";
break;
case '6':
strNum = "陆";
break;
case '7':
strNum = "柒";
break;
case '8':
strNum = "捌";
break;
case '9':
strNum = "玖";
break;
case '0':
strNum = "零";
break;
}
//处理特殊情况
strNow = strBig;
//分为零时的情况
if ( (i == 1) && (strFen.charAt(lenIntFen - 1) == '0'))
strBig = "整";
//角为零时的情况
else if ( (i == 2) && (strFen.charAt(lenIntFen - 1) == '0')) { //角分同时为零时的情况
if (!strBig.equals("整"))
strBig = "零" + strBig;
}
//元为零的情况
else if ( (i == 3) && (strFen.charAt(lenIntFen - 1) == '0'))
strBig = "圆" + strBig;
//拾-仟中一位为零且其前一位(元以上)不为零的情况时补零
else if ( (i < 7) && (i > 3) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) != '零') && (strNow.charAt(0) != '圆'))
strBig = "零" + strBig;
//拾-仟中一位为零且其前一位(元以上)也为零的情况时跨过
else if ( (i < 7) && (i > 3) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '零')) {}
//拾-仟中一位为零且其前一位是元且为零的情况时跨过
else if ( (i < 7) && (i > 3) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '圆')) {}
//当万为零时必须补上万字
else if ( (i == 7) && (strFen.charAt(lenIntFen - 1) == '0'))
strBig = "万" + strBig;
//拾万-仟万中一位为零且其前一位(万以上)不为零的情况时补零
else if ( (i < 11) && (i > 7) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) != '零') && (strNow.charAt(0) != '万'))
strBig = "零" + strBig;
//拾万-仟万中一位为零且其前一位(万以上)也为零的情况时跨过
else if ( (i < 11) && (i > 7) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '万')) {}
//拾万-仟万中一位为零且其前一位为万位且为零的情况时跨过
else if ( (i < 11) && (i > 7) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '零')) {}
//万位为零且存在仟位和十万以上时,在万仟间补零
else if ( (i < 11) && (i > 8) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '万') && (strNow.charAt(2) == '仟'))
strBig = strNum + strDW + "万零" + strBig.substring(1, strBig.length());
//单独处理亿位
else if (i == 11) {
//亿位为零且万全为零存在仟位时,去掉万补为零
if ( (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '万') && (strNow.charAt(2) == '仟'))
strBig = "亿" + "零" + strBig.substring(1, strBig.length());
//亿位为零且万全为零不存在仟位时,去掉万
else if ( (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '万') && (strNow.charAt(2) != '仟'))
strBig = "亿" + strBig.substring(1, strBig.length());
//亿位不为零且万全为零存在仟位时,去掉万补为零
else if ( (strNow.charAt(0) == '万') && (strNow.charAt(2) == '仟'))
strBig = strNum + strDW + "零" + strBig.substring(1, strBig.length());
//亿位不为零且万全为零不存在仟位时,去掉万
else if ( (strNow.charAt(0) == '万') && (strNow.charAt(2) != '仟'))
strBig = strNum + strDW + strBig.substring(1, strBig.length());
//其他正常情况
else
strBig = strNum + strDW + strBig;
}
//拾亿-仟亿中一位为零且其前一位(亿以上)不为零的情况时补零
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) != '零') && (strNow.charAt(0) != '亿'))
strBig = "零" + strBig;
//拾亿-仟亿中一位为零且其前一位(亿以上)也为零的情况时跨过
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '亿')) {}
//拾亿-仟亿中一位为零且其前一位为亿位且为零的情况时跨过
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '零')) {}
//亿位为零且不存在仟万位和十亿以上时去掉上次写入的零
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) != '0') &&
(strNow.charAt(0) == '零') && (strNow.charAt(1) == '亿') &&
(strNow.charAt(3) != '仟'))
strBig = strNum + strDW + strBig.substring(1, strBig.length());
//亿位为零且存在仟万位和十亿以上时,在亿仟万间补零
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) != '0') &&
(strNow.charAt(0) == '零') && (strNow.charAt(1) == '亿') &&
(strNow.charAt(3) == '仟'))
strBig = strNum + strDW + "亿零" + strBig.substring(2, strBig.length());
else
strBig = strNum + strDW + strBig;
strFen = strFen.substring(0, lenIntFen - 1);
lenIntFen--;
}
return strBig;
}
catch (Exception e) {
return "";
}
}
public static void main(String[] args){
System.out.println(ShuceUtils.TranslateMoneyToChn(123450000));
}
}
/**
* 将数字转换成中文表示
* @param smallmoney double
* @return String
*/
public static String TranslateMoneyToChn(double smallmoney) {
String value = String.valueOf(smallmoney);
if (null == value || "".equals(value.trim()))
return "零";
String strCheck, strArr, strFen, strDW, strNum, strBig, strNow;
double d = 0;
try {
d = Double.parseDouble(value);
}
catch (Exception e) {
return "数据" + value + "非法!";
}
strCheck = value + ".";
int dot = strCheck.indexOf(".");
if (dot > 12) {
return "数据" + value + "过大,无法处理!";
}
try {
int i = 0;
strBig = "";
strDW = "";
strNum = "";
long intFen = Math.round(d * 100);
strFen = String.valueOf(intFen);
int lenIntFen = strFen.length();
while (lenIntFen != 0) {
i++;
switch (i) {
case 1:
strDW = "分";
break;
case 2:
strDW = "角";
break;
case 3:
strDW = "圆";
break;
case 4:
strDW = "拾";
break;
case 5:
strDW = "佰";
break;
case 6:
strDW = "仟";
break;
case 7:
strDW = "万";
break;
case 8:
strDW = "拾";
break;
case 9:
strDW = "佰";
break;
case 10:
strDW = "仟";
break;
case 11:
strDW = "亿";
break;
case 12:
strDW = "拾";
break;
case 13:
strDW = "佰";
break;
case 14:
strDW = "仟";
break;
}
switch (strFen.charAt(lenIntFen - 1)) { //选择数字
case '1':
strNum = "壹";
break;
case '2':
strNum = "贰";
break;
case '3':
strNum = "叁";
break;
case '4':
strNum = "肆";
break;
case '5':
strNum = "伍";
break;
case '6':
strNum = "陆";
break;
case '7':
strNum = "柒";
break;
case '8':
strNum = "捌";
break;
case '9':
strNum = "玖";
break;
case '0':
strNum = "零";
break;
}
//处理特殊情况
strNow = strBig;
//分为零时的情况
if ( (i == 1) && (strFen.charAt(lenIntFen - 1) == '0'))
strBig = "整";
//角为零时的情况
else if ( (i == 2) && (strFen.charAt(lenIntFen - 1) == '0')) { //角分同时为零时的情况
if (!strBig.equals("整"))
strBig = "零" + strBig;
}
//元为零的情况
else if ( (i == 3) && (strFen.charAt(lenIntFen - 1) == '0'))
strBig = "圆" + strBig;
//拾-仟中一位为零且其前一位(元以上)不为零的情况时补零
else if ( (i < 7) && (i > 3) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) != '零') && (strNow.charAt(0) != '圆'))
strBig = "零" + strBig;
//拾-仟中一位为零且其前一位(元以上)也为零的情况时跨过
else if ( (i < 7) && (i > 3) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '零')) {}
//拾-仟中一位为零且其前一位是元且为零的情况时跨过
else if ( (i < 7) && (i > 3) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '圆')) {}
//当万为零时必须补上万字
else if ( (i == 7) && (strFen.charAt(lenIntFen - 1) == '0'))
strBig = "万" + strBig;
//拾万-仟万中一位为零且其前一位(万以上)不为零的情况时补零
else if ( (i < 11) && (i > 7) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) != '零') && (strNow.charAt(0) != '万'))
strBig = "零" + strBig;
//拾万-仟万中一位为零且其前一位(万以上)也为零的情况时跨过
else if ( (i < 11) && (i > 7) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '万')) {}
//拾万-仟万中一位为零且其前一位为万位且为零的情况时跨过
else if ( (i < 11) && (i > 7) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '零')) {}
//万位为零且存在仟位和十万以上时,在万仟间补零
else if ( (i < 11) && (i > 8) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '万') && (strNow.charAt(2) == '仟'))
strBig = strNum + strDW + "万零" + strBig.substring(1, strBig.length());
//单独处理亿位
else if (i == 11) {
//亿位为零且万全为零存在仟位时,去掉万补为零
if ( (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '万') && (strNow.charAt(2) == '仟'))
strBig = "亿" + "零" + strBig.substring(1, strBig.length());
//亿位为零且万全为零不存在仟位时,去掉万
else if ( (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '万') && (strNow.charAt(2) != '仟'))
strBig = "亿" + strBig.substring(1, strBig.length());
//亿位不为零且万全为零存在仟位时,去掉万补为零
else if ( (strNow.charAt(0) == '万') && (strNow.charAt(2) == '仟'))
strBig = strNum + strDW + "零" + strBig.substring(1, strBig.length());
//亿位不为零且万全为零不存在仟位时,去掉万
else if ( (strNow.charAt(0) == '万') && (strNow.charAt(2) != '仟'))
strBig = strNum + strDW + strBig.substring(1, strBig.length());
//其他正常情况
else
strBig = strNum + strDW + strBig;
}
//拾亿-仟亿中一位为零且其前一位(亿以上)不为零的情况时补零
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) != '零') && (strNow.charAt(0) != '亿'))
strBig = "零" + strBig;
//拾亿-仟亿中一位为零且其前一位(亿以上)也为零的情况时跨过
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '亿')) {}
//拾亿-仟亿中一位为零且其前一位为亿位且为零的情况时跨过
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '零')) {}
//亿位为零且不存在仟万位和十亿以上时去掉上次写入的零
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) != '0') &&
(strNow.charAt(0) == '零') && (strNow.charAt(1) == '亿') &&
(strNow.charAt(3) != '仟'))
strBig = strNum + strDW + strBig.substring(1, strBig.length());
//亿位为零且存在仟万位和十亿以上时,在亿仟万间补零
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) != '0') &&
(strNow.charAt(0) == '零') && (strNow.charAt(1) == '亿') &&
(strNow.charAt(3) == '仟'))
strBig = strNum + strDW + "亿零" + strBig.substring(2, strBig.length());
else
strBig = strNum + strDW + strBig;
strFen = strFen.substring(0, lenIntFen - 1);
lenIntFen--;
}
return strBig;
}
catch (Exception e) {
return "";
}
}
public static void main(String[] args){
System.out.println(ShuceUtils.TranslateMoneyToChn(123450000));
}
}
看了 JAVA将数字转表示成相应的...的网友还看了以下:
地点是济南,前后两座楼都是33层,95米楼间距是70米,请问7层的楼被挡光吗?冬至:冬天最短的那一 2020-05-19 …
上一段8级楼梯,规定每一步只能上一级或两级.问要登上第8级楼梯共有多少种不同走法?(如果其中第6级 2020-06-18 …
某大学有两栋宿舍楼,1号楼里住着200名学生,2号楼里住着300名学生.两楼相距900米.如图.现 2020-06-18 …
小王上楼梯,他跨步的方法是:一步上一个台阶,或一步上两个台阶.(1)如果楼梯有三个台阶,则小王上楼 2020-07-23 …
这是道数列应用题一家宾馆一号楼共有n层,2号楼共有3层,3号楼共有4层,现在从1号楼,2号楼,3号 2020-08-04 …
相似三角形的应用1,一楼房前距楼底20米的平地上放一平面镜,当眼睛距地面高度为1.5米的人站在距楼底 2020-11-21 …
数学问题走楼梯问题一次只能走1或2格,问如果楼梯一共有十级,要上到最上面的一级共有多少种不同的走法? 2020-11-25 …
邮政局要在1号楼与2号楼之间设一邮箱,以便于这里的人们邮信.1号楼每月大约有90个人邮信,2号楼每月 2020-11-27 …
在一副"天欣家园"食完效果图上,量得1号楼和2号楼之间的距离是6cm,而实际它们的距离是72m.那么 2020-11-28 …
郁闷的数学题一条街上有5栋楼,按从左到右顺序编号为1,2,3,4,5.每幢楼有对应自己编号的A厂职工 2020-12-05 …