Java implementation of floating point number to the renminbi small example

  • 2020-04-01 01:33:22
  • OfStack


import java.util.ArrayList; 
import java.util.List; 

public class RMBConverter2 implements IRMBConverter { 

    private static final String [] RMB_NUMBER ={" zero "," one "," Ii. "," 3 "," boss "," wu "," lu "," Retailer, ","  "," nine "}; 

    private static final String [] RMB_ATTR = {" yuan "," ten "," hk "," micky "," wan "," ten "," best "," micky "," Hundred million "," ten "," hk "," micky "," wan "," ten "," hk "," micky "}; 

    private static final String[] RMB_FEN = {" points "," Angle "}; 

      
    @Override
    public String change2RMB(double counts) { 
        StringBuffer rsBuf = new StringBuffer(); 

        if (counts == 0L) { 
            return " zero "; 
        } 

        if (counts < 0)  
            rsBuf.append(" negative "); 

        String zheng = strConverse(String.valueOf((long)counts)); 
        String xiao = strConverse(String.valueOf(Math.round((counts - (long)counts)*100))); 

        char [] zhengArray = zheng.toCharArray(); 
        char [] xiaoArray = xiao.toCharArray(); 

        int zLength = zhengArray.length; 
        int xLength = xiaoArray.length; 

        List<String> zhengList = new ArrayList<String>(); 

        for(int i =0; i< zLength; i++) { 
            int value = Integer.parseInt(""+zhengArray[i]); 
            if (value == 0 && (i != 4) && (i != 8) && i != 0) { 
                zhengList.add(RMB_NUMBER[value]); 
            }else { 
                zhengList.add(RMB_NUMBER[value]+ 
                     RMB_ATTR[i]); 
            } 
        } 

        for(int i = zhengList.size()-1; i>=0; i--) { 
            rsBuf.append(zhengList.get(i)); 
        } 

          
        for(int i =0; i<xLength ;i++) { 
            int value = Integer.parseInt(""+xiaoArray[i]); 
            if (value > 0 ) { 
                rsBuf.append(RMB_NUMBER[value]) 
                 .append(RMB_FEN[xLength-i-1]); 
            } 
        } 

        String rs = rsBuf.toString(); 
        rs = rs.replaceAll(" zero +", " zero "); 
        rs = rs.replaceAll(" Zero yuan ", " yuan "); 
        rs = rs.replaceAll(" One hundred thousand ", " wan "); 
        rs = rs.replaceAll(" One billion ", " Hundred million "); 
        rs = rs.replaceAll(" One hundred million ", " Hundred million "); 
        return rs; 
    } 

      
    private String strConverse(String str) { 
        StringBuffer rs = new StringBuffer(); 
        char [] strArray = str.toCharArray(); 
        for(int i = str.length()-1; i>=0; i--) { 
            rs.append(strArray[i]); 
        } 
        return rs.toString(); 
    } 

      
    public static void main(String args []) { 

        RMBConverter2 c2 = new RMBConverter2(); 
        System.out.println(c2.change2RMB(2001004.10)); 
        System.out.println(c2.change2RMB(2000000.10)); 
        System.out.println(c2.change2RMB(0L)); 
        System.out.println(c2.change2RMB(1121000010000000L)); 
    } 

} 


Related articles: