比如4230-->四千二百三十
/* 把一个四位数字符串转换成一个中文读法
*
* 把一个浮点数拆分,小数部分保留两位数
*
*
*
* */
package com.yangyang.array;
import java.util.Arrays;
public class Num2Rmb {
private String[] hanArr = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌",
"玖" };
private String[] unitArr = { "拾", "佰", "仟" };
/*
* 把一个浮点数分解成整数部分和小数部分
*/
private String[] divide(double num) {
// 将一个浮点数强制转换为long,得到整数部分
long zheng = (long) num;
// 浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整的到两位小数
long xiao = Math.round((num - zheng) * 100);
return new String[] { zheng + "", String.valueOf(xiao) };// 返回的是数组的地址
}
private String toHanStr(String numStr) {
String result = "";
int numLen = numStr.length();
for (int i = 0; i < numLen; i++) { // 对字符串包含的每个字符进行遍历转换成相应的数字
int num = numStr.charAt(i) - 48;
// int lastNum=numStr.charAt(numLen-1)-48;
if (i != numLen - 1) {
if (num != 0) {
result += hanArr[num] + unitArr[numLen - 2 - i];
}
else {
if ((numStr.charAt(i - 1) - 48) == 0) {
continue;
}
if (num == 0 && (numStr.charAt(i + 1) - 48) == 0
&& (numStr.charAt(i + 2) - 48) == 0) {
continue;
}
result += hanArr[num];
}
} else {
if (num == 0 && (numStr.charAt(i - 1) - 48) != 0) {
continue;
}
if (num == 0 && (numStr.charAt(i - 1) - 48) == 0) {
continue;
} else if (num == 0 && (numStr.charAt(i - 1) - 48) == 0
&& (numStr.charAt(i - 2) - 48) == 0) {
continue;
}
result += hanArr[num];
}
}
return result;
}
public static void main(String[] args) {
Num2Rmb nr = new Num2Rmb();
System.out.println(Arrays.toString(nr.divide(236711125.123)));
System.out.println(nr.toHanStr("6005"));
}
}
虽然写出,但思绪很乱