您的位置:首页 > 其它

将浮点数转换成人民币读法字符串

2017-09-20 15:45 375 查看
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) };
}

}

测试数字是:61009.234

得到结果是:陆万壹仟零玖元贰角叁分
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: