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