小数部分与整数部分是不一样的。
整数部分最高位的单位不确定,需要反转,从最低位,即元、拾、百、、、、方式进行读取和添加单位;
但小数部分,则是最低位可能不确定,不需要反转,直接按角、分、厘。。。进行转换,并且单位要后添加。
这是Java开发实战1200例的题目吧?
我是这样弄的:
- private static String getDecimal(String num) {
- // TODO Auto-generated method stub
-
- String[] STR_UNIT = {"角", "分", "厘"};
-
- String[] STR_NUMBER = {"零", "壹", "贰", "叁", "肆",
- "伍", "陆","柒", "捌", "玖"};
-
- if( num.indexOf(".") != -1 ){
- num = num.substring( num.indexOf(".") + 1, num.length());
- }else{
- return "";
- }
- num = new StringBuilder(num).toString();
- StringBuilder temp = new StringBuilder();
- for( int i = 0; i < num.length(); i ++ ){
- temp.append( STR_NUMBER[ num.charAt(i) - 48 ]);
- temp.append( STR_UNIT[ i ]);
- }
- num = temp.toString();
- num = num.replace( "零角", "零" );
- num = num.replace( "零分", "零" );
- num = num.replace( "零厘", "零" );
- if( num.lastIndexOf("零") == num.length() - 1){
- num = num.substring(0, num.length() - 1);
- }
- return num;
- }
复制代码 |