大大毛 的筆記

            DDM's Note

          哪怕沒有辦法一定有說法,
          就算沒有鴿子一定有烏鴉,
          固執無罪 夢想有價,
          讓他們驚訝.

          posts - 14, comments - 23, trackbacks - 0, articles - 58
             :: 首頁 ::  :: 聯系 ::  :: 管理

          貨幣金額大寫

          Posted on 2006-11-06 22:29 大大毛 閱讀(3408) 評論(0)  編輯  收藏 所屬分類: JAVA

          ??????昨天,在群上談論到貨幣金額大寫轉換的問題,有空就自己做了一個。

          ??????在實現過程中由于采用的解決方法而遇到一點問題:
          ????????????由于輸入的是一個貨幣數字字符串,因此對輸入的合法性檢驗必不可少,討論中提到有用正則來進行檢驗,不過這個我不在行,所以我的思路是利用JDK自帶的類型轉換來完成,但是在先前使用 Double.parseDouble(String money); 時碰到了字符長度的限制,長了一點就會超出double的取值范圍,后來轉而使用 java.math.BigDecimal 類來實現字符串的檢驗以及一點點變換。

          ????????????考慮到以后使用中的通用性,因此把各位的符號(如仟,佰,拾,萬等)提了出來,這樣如果以其它的形式(如E文)表現,不會影響到實現。

          ????????????小數后精度的考慮,我想一個字符型貨幣不一定就只能到小數后兩位的,因此沒有依賴于2位小數的實現,而是根據小數后單位符號的個數來規定精度。例如將小數后的符號由 {"角","分"} 改成 {"角","分","厘"} 的話,就可以實現對小數后三位的格式化輸出。

          ????????????在實現中,我開放了兩個接口,以便使用
          ???? /**
          ?????*?貨幣數字形式轉換成大寫
          ?????*?
          @param ?strMoney(String):貨幣的數字形式字符串
          ?????
          */

          ????
          public ? static ?String?parseMoney(String?strMoney)? throws ?NumberFormatException
          ????????????這個接口,是用于檢驗+轉換的,它可以實現該類的全部功能
          ???? /**
          ?????*?轉換成大寫金額
          ?????*?
          @param ?strMoney(String):規范的數字貨幣形式字符串
          ?????
          */

          ????
          public ? static ?String?toFrmString(String?strMoney)
          ????????????這個接口,我也開放出來,在實現中它完成部分功能,僅僅提供對無符號貨幣形式的轉換,它完成轉換的核心邏輯,開放它是出于以后能使用新增的輸入檢驗邏輯。

          ??????整個類的實現(沒有想到好名稱,所以就隨便取了一個):
          類實現代碼

          ??????運行
          ????????????輸入1023470847959328310393.03
          ????????????輸出:壹拾萬零貳仟叁佰肆拾柒億零捌佰肆拾柒萬玖仟伍佰玖拾叁億貳仟捌佰叁拾壹萬零叁佰玖拾叁元零叁分
          ????????????輸入:10010000000
          ????????????輸出:壹佰億零壹仟萬元
          ????????????輸入:.01
          ????????????輸出:壹分

          i am ddm

          主站蜘蛛池模板: 卢湾区| 泾川县| 咸宁市| 图们市| 丹江口市| 磴口县| 台中县| 尚义县| 分宜县| 舞阳县| 镇巴县| 阿合奇县| 汾阳市| 手游| 宣武区| 兰州市| 枣阳市| 广德县| 沭阳县| 读书| 通江县| 山东省| 东城区| 宜宾市| 望奎县| 清苑县| 贵南县| 岳西县| 景宁| 库车县| 瑞金市| 平塘县| 尚义县| 长垣县| 洛扎县| 昌江| 霍林郭勒市| 铜陵市| 乐清市| 昌邑市| 毕节市|