<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無線&移動互聯網技術研發

    換位思考·····
    posts - 19, comments - 53, trackbacks - 0, articles - 283
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    java 將數字金額轉化為漢字(摘)

    Posted on 2009-05-15 22:09 Gavin.lee 閱讀(635) 評論(1)  編輯  收藏 所屬分類: java SE & EE
    摘 :http://www.java2000.net/p32


    import java.math.BigDecimal;   
      
    public class ConvertNumber 
    {   
      
    /** 定義數組存放數字對應的大寫 */
      
      
    private final static String[] STR_NUMBER = """""""""""""""""""" }
    ;   
      
      
    /** 定義數組存放位數的大寫 */
      
      
    private final static String[] STR_MODIFY = """""""""""""""""""""""" }
    ;   
      
      
    /**  
       * 轉化整數部分  
       *   
       * 
    @param
     tempString  
       * 
    @return
     返回整數部分  
       
    */
      
      
    private static String getInteger(String tempString) 
    {   
        
    /** 用來保存整數部分數字串 */
      
        String strInteger 
    = null;//     

        /** 記錄"."所在位置 */  
        
    int intDotPos = tempString.indexOf("."
    );   
        
    int intSignPos = tempString.indexOf("-"
    );   
        
    if (intDotPos == -1
    )   
          intDotPos 
    =
     tempString.length();   
        
    /** 取出整數部分 */
      
        strInteger 
    = tempString.substring(intSignPos + 1
    , intDotPos);   
        strInteger 
    = new
     StringBuffer(strInteger).reverse().toString();   
        StringBuffer sbResult 
    = new
     StringBuffer();   
        
    for (int i = 0; i < strInteger.length(); i++
    {   
          sbResult.append(STR_MODIFY[i]);   
          sbResult.append(STR_NUMBER[strInteger.charAt(i) 
    - 48
    ]);   
        }
       
           
        sbResult 
    =
     sbResult.reverse();   
        replace(sbResult, 
    "零拾"""
    );   
        replace(sbResult, 
    "零佰"""
    );   
        replace(sbResult, 
    "零仟"""
    );   
        replace(sbResult, 
    "零萬"""
    );   
        replace(sbResult, 
    "零億"""
    );   
        replace(sbResult, 
    "零零"""
    );   
        replace(sbResult, 
    "零零零"""
    );   
        
    /** 這兩句不能顛倒順序 */
      
        replace(sbResult, 
    "零零零零萬"""
    );   
        replace(sbResult, 
    "零零零零"""
    );   
        
    /** 這樣讀起來更習慣. */
      
        replace(sbResult, 
    "壹拾億""拾億"
    );   
        replace(sbResult, 
    "壹拾萬""拾萬"
    );   
        
    /** 刪除個位上的零 */
      
        
    if (sbResult.charAt(sbResult.length() - 1== '' && sbResult.length() != 1
    )   
          sbResult.deleteCharAt(sbResult.length() 
    - 1
    );   
        
    if (strInteger.length() == 2
    {   
          replace(sbResult, 
    "壹拾"""
    );   
        }
       
        
    /** 將結果反轉回來. */
      
        
    return
     sbResult.toString();   
      }
       
      
      
    /**  
       * 轉化小數部分 例:輸入22.34返回叁肆  
       *   
       * 
    @param
     tempString  
       * 
    @return
      
       
    */
      
      
    private static String getFraction(String tempString) 
    {   
        String strFraction 
    = null
    ;   
        
    int intDotPos = tempString.indexOf("."
    );   
        
    /** 沒有點說明沒有小數,直接返回 */
      
        
    if (intDotPos == -1
    )   
          
    return ""
    ;   
        strFraction 
    = tempString.substring(intDotPos + 1
    );   
        StringBuffer sbResult 
    = new
     StringBuffer(strFraction.length());   
        
    for (int i = 0; i < strFraction.length(); i++
    {   
          sbResult.append(STR_NUMBER[strFraction.charAt(i) 
    - 48
    ]);   
        }
       
        
    return
     sbResult.toString();   
      }
       
      
      
    /**  
       * 判斷傳入的字符串中是否有.如果有則返回點  
       *   
       * 
    @param
     tempString  
       * 
    @return
      
       
    */
      
      
    private static String getDot(String tempString) 
    {   
        
    return tempString.indexOf("."!= -1 ? "" : ""
    ;   
      }
       
      
      
    /**  
       * 判斷傳入的字符串中是否有-如果有則返回負  
       *   
       * 
    @param
     tempString  
       * 
    @return
      
       
    */
      
      
    private static String getSign(String tempString) 
    {   
        
    return tempString.indexOf("-"!= -1 ? "" : ""
    ;   
      }
       
      
      
    /**  
       * 將一個數字轉化為金額  
       *   
       * 
    @param
     tempNumber 傳入一個double的變量  
       * 
    @return
     返一個轉換好的字符串  
       
    */
      
      
    public static String numberToChinese(double tempNumber) 
    {   
        java.text.DecimalFormat df 
    = new java.text.DecimalFormat("#.#########"
    );   
        String pTemp 
    =
     String.valueOf(df.format(tempNumber));   
        StringBuffer sbResult 
    = new StringBuffer(getSign(pTemp) + getInteger(pTemp) + getDot(pTemp) +
     getFraction(pTemp));   
        
    return
     sbResult.toString();   
      }
       
      
      
    public static String numberToChinese(BigDecimal tempNumber) 
    {   
        
    return
     numberToChinese(tempNumber.doubleValue());   
      }
       
      
      
    /**  
       * 替代字符  
       *   
       * 
    @param
     pValue  
       * 
    @param
     pSource  
       * 
    @param
     pDest  
       
    */
      
      
    private static void replace(StringBuffer pValue, String pSource, String pDest) 
    {   
        
    if (pValue == null || pSource == null || pDest == null
    )   
          
    return
    ;   
        
    /** 記錄pSource在pValue中的位置 */
      
        
    int intPos = 0
    ;   
        
    do 
    {   
          intPos 
    =
     pValue.toString().indexOf(pSource);   
          
    /** 沒有找到pSource */
      
          
    if (intPos == -1
    )   
            
    break
    ;   
          pValue.delete(intPos, intPos 
    +
     pSource.length());   
          pValue.insert(intPos, pDest);   
        }
     while (true);   
      }
       
      
      
    /**  
       * 
    @param
     args  
       
    */
      
      
    public static void main(String[] args) 
    {   
        System.out.println(numberToChinese(
    1230400567.8934
    ));   
      }
       
    }
      

    評論

    # re: java 將數字金額轉化為漢字(摘)  回復  更多評論   

    2012-09-19 15:34 by 線程
    好機會
    主站蜘蛛池模板: 久久精品国产精品亚洲色婷婷| 亚洲国产韩国一区二区| 免费播放在线日本感人片| 久久久久亚洲av无码专区导航| 中文字幕影片免费在线观看| 特级aaaaaaaaa毛片免费视频| 亚洲人成在线播放网站| 免费精品国产自产拍在线观看图片| 亚洲av纯肉无码精品动漫| 国产亚洲A∨片在线观看| 免费人成在线视频| 中文字幕的电影免费网站| 亚洲理论在线观看| 亚洲国产精品成人网址天堂| 67194成手机免费观看| 国产亚洲Av综合人人澡精品| 亚洲天堂中文字幕| 免费国产a国产片高清| 最近免费2019中文字幕大全| 看亚洲a级一级毛片| 亚洲视频在线观看网址| 国产免费久久精品| 在线观看成人免费视频不卡| 成人免费乱码大片A毛片| 自拍日韩亚洲一区在线| 亚洲精品字幕在线观看| 免费激情视频网站| 亚洲免费网站在线观看| 成人国产精品免费视频| 亚洲6080yy久久无码产自国产| 老汉色老汉首页a亚洲| 亚洲无人区午夜福利码高清完整版| 女人18毛片a级毛片免费| 在线观看免费中文视频| 久久久久久久久久久免费精品| 亚洲大尺度无码无码专线一区| 亚洲日韩乱码中文无码蜜桃| 亚洲国产精品VA在线观看麻豆| 男人的天堂亚洲一区二区三区 | 免费无码又爽又刺激一高潮| 亚洲日本一线产区和二线产区对比|