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

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

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

    如何將字符串或者數字轉換成大寫貨幣

    Posted on 2006-11-23 17:51 Jaunt 閱讀(2313) 評論(3)  編輯  收藏 所屬分類: 咖啡Java

    今天去面試卻遇到了這樣一道題“如何將字符串或者數字轉換成大寫貨幣”,當時沒有做出來,很氣憤,于是就在網上查涉及如何將字符串或者數字轉換成大寫貨幣的方法,終于找出了如何做的方法^_^

    主要功能:

    1.???String convertToCapitalMoney(String moneyStr)?
    ??????將字符串轉換成中文的大寫貨幣值

    2.???String convertToCapitalMoney(double moneyValue)
    ??????將數字轉換成中文的大寫貨幣值

    文件:MoneyConvert.java

    public class MoneyConvert {
    ???? /*
    ????? *? <p>Description: 字符串處理的公共類</p>
    ????? *? <p>Copyright 2006 </p>
    ????? *? @author? jaunt
    ????? *? @Create Date : 2006-11-23
    ????? */
    ???
    ???? /*
    ????? *? 將字符串轉換成中文的大寫貨幣值
    ????? *? @param?? moneyStr
    ????? *? @return
    ????? */
    ??? public static String convertToCapitalMoney(String moneyStr) {
    ??? ?double money = 0;
    ??? ?try {
    ??? ??money = Double.parseDouble(moneyStr);
    ???? }
    ??? ?catch (Exception e) {
    ??? ??
    ???? }
    ??? ?return convertToCapitalMoney(money);
    ??? }
    ??? /*
    ???? *? 將數字轉換成中文的大寫貨幣值
    ???? *? @param?? moneyValue
    ???? *? @return
    ???? */
    ??? public static String convertToCapitalMoney(double moneyValue) {
    ??? ?double money = moneyValue + 0.005;? //? 防止浮點數四舍五入造成誤差
    ??? ?String Result = "";
    ??? ?String capitalLetter = "零壹貳叁肆伍陸柒捌玖";
    ??? ?String moneytaryUnit = "分角圓拾佰仟萬拾佰仟億拾佰仟萬拾佰仟億拾佰仟";???
    ??? ?String tempCapital, tempUnit;
    ??? ?
    ??? ?
    ??? ?int integer;?? //? 錢的整數部分
    ??? ?int point;???? //? 錢的小數部分
    ???? int tempValue; //? 錢的每一位的值
    ???? integer = (int)money;
    ???? point = (int)(100 * (money - (float)integer));
    ?
    ???? if (integer == 0)
    ???? ?Result = "零圓";
    ??????? /*
    ???????? *???? 貨幣整數部分操作
    ???????? *???? 1.??? 依次取得每一位上的值
    ???????? *???? 2.??? 轉換成大寫
    ???????? *???? 3.??? 確定貨幣單位
    ??????? */
    ???? for (int i = 1; integer > 0; i++) {
    ???? ?tempValue = (integer % 10);???
    ???? ?tempCapital = capitalLetter.substring(tempValue, tempValue + 1);????
    ???? ?tempUnit = moneytaryUnit.substring(i + 1, i + 2);????
    ???? ?Result = tempCapital + tempUnit + Result;???
    ???? ?integer =? integer / 10;
    ???? }
    ??????? /*
    ??????? *? 貨幣小數部分操作
    ????????*/
    ???? tempValue = (point / 10);?
    ???? for (int i = 1; i > -1; i--) {????
    ???? ?tempCapital = capitalLetter.substring(tempValue, tempValue + 1);???
    ???? ?tempUnit = moneytaryUnit.substring(i, i + 1);???
    ???? ?Result = Result + tempCapital + tempUnit;???
    ???? ?tempValue = point % 10;
    ???? }
    ???? return Result;
    ??? }??
    }

    測試代碼:

    ?public static void main(String[] args) {
    ?
    ??? ?String money1 = MoneyConvert.convertToCapitalMoney("33333.214");
    ??????? System.out.println(money1);
    ??????? String money = MoneyConvert.convertToCapitalMoney(33333.214);
    ??????? System.out.println(money);
    }

    輸出結果:

    叁萬叁圓
    叁萬叁圓

    ?

    Feedback

    # re: 如何將字符串或者數字轉換成大寫貨幣  回復  更多評論   

    2006-11-23 19:28 by BeanSoft
    支持一下!

    # re: 如何將字符串或者數字轉換成大寫貨幣  回復  更多評論   

    2008-07-19 17:52 by 陳育平
    很不錯,但我用另外的數字測試時出現錯誤,發現當整數部分大于7位數的時候出錯。我調試了好多次,只發現了出現問題的地方(在下面的程序中已經標出來了),但卻不知是什么原因,知道原因的告訴我一聲,萬分感謝!給我郵件:yuping8420@163.com
    我把程序附在下面:

    public class MoneyConvert {

    /**
    *
    * @param moneyValue
    * @return
    */
    public static String convertToCapitalMoney(String moneyValue){
    double money = 0;
    try{
    money = Double.parseDouble(moneyValue);
    System.out.println(money);
    }catch(Exception e){

    }
    return convertToCapitalMoney(money);
    }
    /**
    *
    * @param moneyValue
    * @return
    */
    public static String convertToCapitalMoney(Double moneyValue){
    double money = moneyValue + 0.005;//防止浮點數四舍五入造成誤差
    String Result = "";
    String capitalLetter = "零壹貳叁肆伍陸柒捌玖";
    String moneytaryUnit = "分角圓拾佰仟萬拾佰仟億拾佰仟萬拾佰仟億拾佰仟";
    String tempCapital,tempUnit;

    int integer;//錢的整數部分
    int point;//錢的小數部分
    int tempValue;//錢的每一位的值
    integer = (int)money;

    /*
    * 以下代碼用測試用例“1234567890.123”時出錯,
    * 打印point=-4587,期望為point=12
    * 用“4567890.123”時卻又正確
    */
    point = (int)(100*(money-(float)integer));
    System.out.println(point);
    if(0 == integer)
    Result = "零圓";
    /*
    * 貨幣整數部分操作
    * 1。依次取得每一位上的值
    * 2。轉換成大寫
    * 3。確定貨幣單位
    */
    for(int i=1;integer>0;i++){
    tempValue = (integer%10);
    tempCapital = capitalLetter.substring(tempValue, tempValue+1);
    tempUnit = moneytaryUnit.substring(i+1, i+2);
    Result = tempCapital + tempUnit + Result;
    integer = integer/10;
    }
    /*
    * 貨幣小數部分操作
    */
    tempValue = (point/10);
    for(int i=1;i>-1;i--){
    tempCapital = capitalLetter.substring(tempValue,tempValue+1 );
    tempUnit = moneytaryUnit.substring(i, i+1);
    Result = Result + tempCapital + tempUnit;
    tempValue = point%10;
    }
    return Result;
    }

    /**
    *
    * @param args
    * 測試用例為"1234567890.123"時出錯
    * 為“4567890.123“時正確
    */
    public static void main(String[] args) {
    String money2 = MoneyConvert.convertToCapitalMoney("4567890.123");
    System.out.println(money2);
    String money1 = MoneyConvert.convertToCapitalMoney("1234567890.123");
    System.out.println(money1);
    }

    }

    # re: 如何將字符串或者數字轉換成大寫貨幣  回復  更多評論   

    2009-03-26 15:37 by foxaobe
    LZ沒考慮0的問題,例如:100200.
    按正常的習慣,應該會顯示拾萬零貳佰.
    結果會是這樣嗎??呵呵
    主站蜘蛛池模板: 中文字幕在线观看亚洲日韩| 亚洲视频在线观看网站| 亚洲高清毛片一区二区| 亚洲?V乱码久久精品蜜桃 | 亚洲综合无码一区二区痴汉| 84pao国产成视频免费播放| 亚洲小视频在线观看| 日本免费中文字幕| 亚洲av激情无码专区在线播放| 三级毛片在线免费观看| 亚洲精品无码国产| 国产精品免费一区二区三区四区| 久久噜噜噜久久亚洲va久| 久久狠狠躁免费观看| 亚洲精品亚洲人成在线麻豆| 国产精彩免费视频| 亚洲av无码国产综合专区| 免费黄色app网站| 国产精品亚洲精品爽爽| 亚洲一本大道无码av天堂| 精品国产免费一区二区三区| 亚洲精品蜜桃久久久久久| 99国产精品视频免费观看| 成人性生免费视频| 国产精品亚洲lv粉色| 免费在线观看一级毛片| 国内精品99亚洲免费高清| 亚洲AV日韩AV永久无码绿巨人 | 亚洲精品福利视频| 日韩在线播放全免费| 亚洲精品中文字幕| 免费A级毛片无码专区| 亚洲人成综合在线播放| 免费在线观看亚洲| 久久久久久久99精品免费观看 | 国产成人综合亚洲绿色| 亚洲中文字幕无码日韩| 波多野结衣在线免费视频| 精品免费AV一区二区三区| 亚洲愉拍99热成人精品热久久| 色老头永久免费网站|