<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.
    按正常的習慣,應該會顯示拾萬零貳佰.
    結果會是這樣嗎??呵呵
    主站蜘蛛池模板: 亚洲精品卡2卡3卡4卡5卡区| 国产免费久久精品丫丫| 亚洲高清国产拍精品26U| 蜜桃精品免费久久久久影院| 久久免费福利视频| 一级做a爰全过程免费视频毛片| 中文文字幕文字幕亚洲色| 亚洲电影国产一区| 亚洲色爱图小说专区| 又大又硬又爽免费视频| 24小时日本在线www免费的| 性xxxxx大片免费视频| A毛片毛片看免费| 有码人妻在线免费看片| 性色av极品无码专区亚洲| 亚洲人成电影网站久久| 亚洲黄色在线观看视频| 亚洲av日韩av激情亚洲| 久久精品国产亚洲沈樵| 色噜噜AV亚洲色一区二区| 亚洲欧洲日产国码高潮αv| 伊人久久亚洲综合影院| 四虎影视精品永久免费| 尤物永久免费AV无码网站| 免费黄网在线观看| 免费理论片51人人看电影| 免费看国产成年无码AV片| 中国在线观看免费高清完整版| 黄+色+性+人免费| 国产成人福利免费视频| 在线视频精品免费| 美女视频黄免费亚洲| 97免费人妻无码视频| AA免费观看的1000部电影| 野花高清在线观看免费3中文 | 国产91免费在线观看| 日本免费一区二区在线观看| 18禁成人网站免费观看| 国产曰批免费视频播放免费s| 久久天天躁狠狠躁夜夜免费观看 | 亚洲乱码日产精品BD在线观看|