您的位置:首页 > 编程语言 > Java开发

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

2018-03-28 19:57 288 查看
4000

public class NumRmb{

private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" , "伍" , "陆" , "柒", "捌" , "玖"};
private String[] unitArr = {"分" , "角" , "元" , "十" , "百", "千"};

private String divide(double num){
long zheng = (long)num;
long xiao = Math.round((num - zheng)*100);
return zheng + "" + xiao;
}

/**
* 把一个七位的数字字符串变成汉字字符串
* @param numStr 需要被转换的七位数字字符串
* @return 七位的数字字符串被转换成汉字字符串
*/

private String toHanStr(String numStr){
String result = "";
//得到数字字符串的整数值
int numZheng = Integer.parseInt(numStr);
//如果整数是零则直接返回零
if(numZheng == 0)
return "零";
int numLen = numStr.length();
//依次遍历数字字符串的每一个数字
for(int i = 0 ; i < numLen ; i++){
//把char型数字转换成int型数字,因为它们的ASCII码值正好相差48
//因此把char型数字减去48得到int型数字
int num = numStr.charAt(i) - 48;
//如果零,则需要添加单位(千,百,十)
if(num != 0){
result += hanArr[num] + unitArr[numLen - i -1];
}
//如果是零,则需要判断这个是不是高位的零例如0068,或者是不是低位的零如6800。
//如果是高位的零或者低位的零,则不用处理
//如果不是高位或低位的零,则应该判断是否连续出现了多个零
//如果出现连续的多个零则只加上一个汉字零即可
else if(num == 0){
int temp1 = numZheng;
int temp2 = numZheng;
for(int j=i;j < numLen-1;j++){
temp1 = temp1/10;
temp2 = temp2%10;
}
//temp1为0表示是高位的零,temp2为零或numZheng表示是低位的零(最后一位是零比较特殊)
//如果最后一位为零则temp2为numZheng
if(temp1 == 0 || temp2 == 0 || temp2 == numZheng){}
else{
int temp3 = numStr.charAt(i-1) - 48;
//System.out.println(temp3);
if(temp3 == 0){}
else{
result += hanArr[num];
}
}

}
}
return result;
}

public static void main(String[] args){
NumRmb nr = new NumRmb();
System.out.println(nr.toHanStr(nr.divide(1006.333)));
}

}
小白学习过程2.0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: