package com.test.task;
/**
* 需求:将浮点数转换成人民币读法字符串
*
* @author Administrator
*
*/
public class Num2Rmb {
private String[] hanArr = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
private String[] unitArr_Integer = { "拾", "佰", "仟", "万" };
private String[] unitArr_Decimal = { "分", "角" };
public static void main(String[] args) {
Num2Rmb nr = new Num2Rmb();
//将整数部分和小数部分分开
String[] str = nr.divide(61009.234);
//对整数部分进行人民币读法转换
String Integer = nr.toHanStr_Integer(str[0]);
//对小数部分进行人民币读法转换
String Decimal = nr.toHanStr_Decimal(str[1]);
//将整数小数组合在一起
String Id = Integer + "元" + Decimal;
System.out.println(Id);
}
// 针对整数部分
private String toHanStr_Integer(String numStr) {
String result = "";
int numLen = numStr.length();
for (int i = 0; i < numLen; i++) {
int num = numStr.charAt(i) - 48;
if (i != numLen - 1 && num != 0) {
result += (hanArr[num] + unitArr_Integer[numLen - 2 - i]);
} else {
if (hanArr[num].equals("零") && result.substring(result.length() - 1, result.length()).equals("零")) {
continue;
} else {
result += hanArr[num];
}
}
}
return result;
}
// 针对小数部分
private String toHanStr_Decimal(String numStr) {
String result = "";
int numLen = numStr.length();
for (int i = 0; i < numLen; i++) {
int num = numStr.charAt(i) - 48;
if (i != numLen && num != 0) {
result += (hanArr[num] + unitArr_Decimal[numLen - 1 - i]);
}
}
return result;
}
//对整数和小数进行分离,用String[]作为返回值类型
private String[] divide(double num) {
long zheng = (long) num;
long xiao = Math.round((num - zheng) * 100);
return new String[] { zheng + "", String.valueOf(xiao) };
}
/**
* 需求:将浮点数转换成人民币读法字符串
*
* @author Administrator
*
*/
public class Num2Rmb {
private String[] hanArr = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
private String[] unitArr_Integer = { "拾", "佰", "仟", "万" };
private String[] unitArr_Decimal = { "分", "角" };
public static void main(String[] args) {
Num2Rmb nr = new Num2Rmb();
//将整数部分和小数部分分开
String[] str = nr.divide(61009.234);
//对整数部分进行人民币读法转换
String Integer = nr.toHanStr_Integer(str[0]);
//对小数部分进行人民币读法转换
String Decimal = nr.toHanStr_Decimal(str[1]);
//将整数小数组合在一起
String Id = Integer + "元" + Decimal;
System.out.println(Id);
}
// 针对整数部分
private String toHanStr_Integer(String numStr) {
String result = "";
int numLen = numStr.length();
for (int i = 0; i < numLen; i++) {
int num = numStr.charAt(i) - 48;
if (i != numLen - 1 && num != 0) {
result += (hanArr[num] + unitArr_Integer[numLen - 2 - i]);
} else {
if (hanArr[num].equals("零") && result.substring(result.length() - 1, result.length()).equals("零")) {
continue;
} else {
result += hanArr[num];
}
}
}
return result;
}
// 针对小数部分
private String toHanStr_Decimal(String numStr) {
String result = "";
int numLen = numStr.length();
for (int i = 0; i < numLen; i++) {
int num = numStr.charAt(i) - 48;
if (i != numLen && num != 0) {
result += (hanArr[num] + unitArr_Decimal[numLen - 1 - i]);
}
}
return result;
}
//对整数和小数进行分离,用String[]作为返回值类型
private String[] divide(double num) {
long zheng = (long) num;
long xiao = Math.round((num - zheng) * 100);
return new String[] { zheng + "", String.valueOf(xiao) };
}
}
测试数字是:61009.234
得到结果是:陆万壹仟零玖元贰角叁分