大大毛 的筆記

            DDM's Note

          哪怕沒(méi)有辦法一定有說(shuō)法,
          就算沒(méi)有鴿子一定有烏鴉,
          固執(zhí)無(wú)罪 夢(mèng)想有價(jià),
          讓他們驚訝.

          posts - 14, comments - 23, trackbacks - 0, articles - 58
             :: 首頁(yè) ::  :: 聯(lián)系 ::  :: 管理

          貨幣金額大寫(xiě)

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

          ??????昨天,在群上談?wù)摰截泿沤痤~大寫(xiě)轉(zhuǎn)換的問(wèn)題,有空就自己做了一個(gè)。

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

          ????????????考慮到以后使用中的通用性,因此把各位的符號(hào)(如仟,佰,拾,萬(wàn)等)提了出來(lái),這樣如果以其它的形式(如E文)表現(xiàn),不會(huì)影響到實(shí)現(xiàn)。

          ????????????小數(shù)后精度的考慮,我想一個(gè)字符型貨幣不一定就只能到小數(shù)后兩位的,因此沒(méi)有依賴于2位小數(shù)的實(shí)現(xiàn),而是根據(jù)小數(shù)后單位符號(hào)的個(gè)數(shù)來(lái)規(guī)定精度。例如將小數(shù)后的符號(hào)由 {"角","分"} 改成 {"角","分","厘"} 的話,就可以實(shí)現(xiàn)對(duì)小數(shù)后三位的格式化輸出。

          ????????????在實(shí)現(xiàn)中,我開(kāi)放了兩個(gè)接口,以便使用
          ???? /**
          ?????*?貨幣數(shù)字形式轉(zhuǎn)換成大寫(xiě)
          ?????*?
          @param ?strMoney(String):貨幣的數(shù)字形式字符串
          ?????
          */

          ????
          public ? static ?String?parseMoney(String?strMoney)? throws ?NumberFormatException
          ????????????這個(gè)接口,是用于檢驗(yàn)+轉(zhuǎn)換的,它可以實(shí)現(xiàn)該類的全部功能
          ???? /**
          ?????*?轉(zhuǎn)換成大寫(xiě)金額
          ?????*?
          @param ?strMoney(String):規(guī)范的數(shù)字貨幣形式字符串
          ?????
          */

          ????
          public ? static ?String?toFrmString(String?strMoney)
          ????????????這個(gè)接口,我也開(kāi)放出來(lái),在實(shí)現(xiàn)中它完成部分功能,僅僅提供對(duì)無(wú)符號(hào)貨幣形式的轉(zhuǎn)換,它完成轉(zhuǎn)換的核心邏輯,開(kāi)放它是出于以后能使用新增的輸入檢驗(yàn)邏輯。

          ??????整個(gè)類的實(shí)現(xiàn)(沒(méi)有想到好名稱,所以就隨便取了一個(gè)):
          類實(shí)現(xiàn)代碼

          ??????運(yùn)行
          ????????????輸入1023470847959328310393.03
          ????????????輸出:壹拾萬(wàn)零貳仟叁佰肆拾柒億零捌佰肆拾柒萬(wàn)玖仟伍佰玖拾叁億貳仟捌佰叁拾壹萬(wàn)零叁佰玖拾叁元零叁分
          ????????????輸入:10010000000
          ????????????輸出:壹佰億零壹仟萬(wàn)元
          ????????????輸入:.01
          ????????????輸出:壹分

          i am ddm

          主站蜘蛛池模板: 黔南| 凭祥市| 英德市| 明星| 霞浦县| 台南市| 安宁市| 涡阳县| 青海省| 木兰县| 东山县| 班玛县| 迭部县| 黄陵县| 乌鲁木齐市| 木兰县| 鄯善县| 镇安县| 温州市| 静安区| 黑龙江省| 白山市| 本溪| 洛宁县| 神池县| 沧州市| 普安县| 辽阳县| 景洪市| 根河市| 嘉禾县| 门源| 牡丹江市| 平武县| 孟村| 龙南县| 扶绥县| 四会市| 云南省| 信宜市| 神木县|