隨筆 - 251  文章 - 504  trackbacks - 0
          <2006年11月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          本博客系個人收集材料及學習記錄之用,各類“大俠”勿擾!

          留言簿(14)

          隨筆分類

          收藏夾

          My Favorite Web Sites

          名Bloger

          非著名Bloger

          搜索

          •  

          積分與排名

          • 積分 - 203416
          • 排名 - 283

          最新評論

          以下是一個把BigDecimal轉化成中文的貨幣表示的一段代碼,博君一哂!

          //中文金額單位數組
          straChineseUnit?=?new?String[]?{"分",?"角",?"圓",?"拾",?"佰",?"仟",?"萬",?"拾",?"佰",?"仟",?"億",?"拾",?"佰",?"仟"};
          //中文數字字符數組
          straChineseNumber?=?new?String[]?{"零",?"壹",?"貳",?"叁",?"肆",?"伍",?"陸",?"柒",?"捌",?"玖"};

          ????/**
          ????*?Description???將數字金額轉換為中文金額
          ????*?@param????????<p>BigDecimal?bigdMoneyNumber?轉換前的數字金額</P>
          ????*?@return???????String
          ????調用:myToChineseCurrency("101.89")="壹佰零壹圓捌角玖分"
          ????myToChineseCurrency("100.89")="壹佰零捌角玖分"
          ????myToChineseCurrency("100")="壹佰圓整"
          ????*/
          ????public?String?DoNumberCurrencyToChineseCurrency(BigDecimal?bigdMoneyNumber)?{
          ????????String?strChineseCurrency?=?"";
          ????????//零數位標記
          ????????boolean?bZero?=?true;
          ????????//中文金額單位下標
          ????????int?ChineseUnitIndex?=?0;

          ????????DoPrintMessage("Calling?Method?DoNumberCurrencyToChineseCurrency");

          ????????try?{
          ????????????if?(bigdMoneyNumber.intValue()?==?0)
          ????????????????return?"零圓整";

          ????????????//處理小數部分,四舍五入
          ????????????double?doubMoneyNumber?=?Math.round(bigdMoneyNumber.doubleValue()?*?100);

          ????????????//是否負數
          ????????????boolean?bNegative?=?doubMoneyNumber?<?0;

          ????????????//取絕對值
          ????????????doubMoneyNumber?=?Math.abs(doubMoneyNumber);

          ????????????//循環處理轉換操作
          ????????????while?(doubMoneyNumber?>?0)?{
          ????????????????//整的處理(無小數位)
          ????????????????if?(ChineseUnitIndex?==?2?&&?strChineseCurrency.length()?==?0)
          ????????????????????strChineseCurrency?=?strChineseCurrency?+?"整";

          ????????????????//非零數位的處理
          ????????????????if?(doubMoneyNumber?%?10?>?0)?{
          ????????????????????strChineseCurrency?=?straChineseNumber[(int)doubMoneyNumber?%?10]?+?straChineseUnit[ChineseUnitIndex]?+?strChineseCurrency;
          ????????????????????bZero?=?false;
          ????????????????}
          ????????????????//零數位的處理
          ????????????????else?{
          ????????????????????//元的處理(個位)
          ????????????????????if?(ChineseUnitIndex?==?2?)?{
          ????????????????????????//段中有數字
          ????????????????????????if?(doubMoneyNumber?>?0)?{
          ????????????????????????????strChineseCurrency?=?straChineseUnit[ChineseUnitIndex]?+?strChineseCurrency;
          ????????????????????????????bZero?=?true;
          ????????????????????????}
          ????????????????????}
          ????????????????????//萬、億數位的處理
          ????????????????????else?if?(ChineseUnitIndex?==?6?||?ChineseUnitIndex?==?10)?{
          ????????????????????????//段中有數字
          ????????????????????????if?(doubMoneyNumber?%?1000?>?0)
          ????????????????????????????strChineseCurrency?=?straChineseUnit[ChineseUnitIndex]?+?strChineseCurrency;
          ????????????????????}

          ????????????????????//前一數位非零的處理
          ????????????????????if?(!bZero)
          ????????????????????????strChineseCurrency?=?straChineseNumber[0]?+?strChineseCurrency;

          ????????????????????bZero?=?true;
          ????????????????}

          ????????????????doubMoneyNumber?=?Math.floor(doubMoneyNumber?/?10);
          ????????????????ChineseUnitIndex?++;
          ????????????}

          ????????????//負數的處理
          ????????????if?(bNegative)
          ????????????????strChineseCurrency?=?"負"?+?strChineseCurrency;
          ????????}
          ????????catch?(Exception?e)?{
          ????????????DoPrintMessage("Exception?Reason??:?Call?Method?DoNumberCurrencyToChineseCurrency?Error");
          ????????????DoPrintMessage("Exception?Message?:?"?+?e.getMessage());
          ????????????e.printStackTrace();

          ????????????return?"";
          ????????}

          ????????return?strChineseCurrency;
          ????}

          原文地址
          posted on 2006-11-15 10:04 matthew 閱讀(226) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 临西县| 马鞍山市| 遵义县| 平阳县| 本溪市| 珲春市| 望都县| 科尔| 抚州市| 哈密市| 霍山县| 罗江县| 黎城县| 泌阳县| 溆浦县| 盈江县| 木里| 昌黎县| 皮山县| 漾濞| 玉树县| 和平区| 霍城县| 仁寿县| 清镇市| 山东省| 鄂伦春自治旗| 陆丰市| 桐庐县| 通化市| 平安县| 原阳县| 八宿县| 蚌埠市| 色达县| 祁连县| 望江县| 建阳市| 新闻| 上饶市| 桐柏县|