Java 实现数字转中文。(个人建议)


private static String[] number_zh = new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾"};//拾是多出位
private static String[] unit_zh = new String[]{"","拾","佰","仟","萬","亿"};

 

public static String shuzizhuanzhongwen(Long number){
//number_zh unit_zh
StringBuffer sb = new StringBuffer();

String str = number.toString();
Stack<String> _stack = new Stack<String>();
for(int i = 0;i < str.length();i++){
_stack.push(number_zh[(int) (number % 10)] );// 带 拾、佰、仟...  修改为  (int) (number % 10) + getUnitZH(Long.valueOf(i))
number = number / 10;
}
while(!_stack.isEmpty()){
sb.append(_stack.pop());
}
return sb.toString();
}

private static String getUnitZH(Long num){
if(num >= 5 && num < 8){
return getUnitZH(num - 4);
}else if(num > 8){
return getUnitZH(num - 8);
}else if(num == 8){
return unit_zh[5]; //亿
}else if(num > 17){
return null;//暂不支持 亿亿
}else{
return unit_zh[num.intValue()];
}
}

注 :  Long 的越界值 好像是 15位,若 17位数得不到支持,请自觉更换数据类型。

@Test

测试类

public static void main(String[] args) {


String str = "5654651555";
Long number = Long.valueOf(str);
System.out.println(shuzizhuanzhongwen(number));
}

结果:

伍拾陆亿伍仟肆佰陆拾伍萬壹仟伍佰伍拾伍


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM