亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于類的大寫金額轉(zhuǎn)換在C#中的實(shí)現(xiàn)

        2020-05-07 02:36:32婁七明楊志金孫建洪張紅偉
        紅河學(xué)院學(xué)報(bào) 2020年2期
        關(guān)鍵詞:字符串阿拉伯?dāng)?shù)字大寫

        婁七明,楊志金,孫建洪,張紅偉

        (紅河學(xué)院工學(xué)院,云南蒙自 661100)

        1 引言

        隨著信息化建設(shè)的不斷推進(jìn),辦公自動(dòng)化程度的不斷提高,很多票據(jù)和經(jīng)濟(jì)合同等都需要打印。在這些票據(jù)和經(jīng)濟(jì)合同中通常需要打印大寫金額,這就需要將用阿拉伯?dāng)?shù)字書寫的金額轉(zhuǎn)換成人民幣大寫形式。在財(cái)務(wù)管理中大寫金額不能隨意書寫,[3]必須遵循一定的規(guī)則。目前有使用各種語(yǔ)言實(shí)現(xiàn)的大寫金額轉(zhuǎn)換函數(shù),但這些函數(shù)都是采用面向過(guò)程的設(shè)計(jì)思想實(shí)現(xiàn)的,且算法比較復(fù)雜,可讀性較差。因此,本文采用面向?qū)ο蟮某绦蛟O(shè)計(jì)思想來(lái)實(shí)現(xiàn)大寫金額轉(zhuǎn)換,并用C#實(shí)現(xiàn)該算法。該算法把待轉(zhuǎn)換的數(shù)字和轉(zhuǎn)換方法封裝為一個(gè)整體,具有可重用性強(qiáng)、可擴(kuò)充性好、算法簡(jiǎn)單易懂等特點(diǎn)。

        2 算法分析

        2.1 大寫金額相關(guān)規(guī)則[1-2]

        用阿拉伯?dāng)?shù)字書寫的金額轉(zhuǎn)換成大寫金額應(yīng)遵循以下規(guī)則:

        (1)阿拉伯?dāng)?shù)字轉(zhuǎn)換為大寫金額后,如果沒有角分位,應(yīng)在“元”后寫“整”(或“正”),否則“角”和“分”后面不寫“整”(或“正”)字。

        (2)把非0的阿拉伯?dāng)?shù)字轉(zhuǎn)換成對(duì)應(yīng)的大寫數(shù)字,并加上相應(yīng)數(shù)位對(duì)應(yīng)的漢字,如10轉(zhuǎn)換為“壹拾元”。

        (3)在億級(jí)以上有不為零的數(shù)字時(shí),億位要加“億”;在萬(wàn)和千萬(wàn)之間有不為零的數(shù)字時(shí),萬(wàn)位要加“萬(wàn)”;金額大于一元時(shí),個(gè)位要加“元”,如1010000100,轉(zhuǎn)換為“壹拾億零壹仟萬(wàn)零壹佰元”。

        (4)如果非0的阿拉伯?dāng)?shù)字之間有一個(gè)0或者多個(gè)0時(shí),大寫金額中間對(duì)應(yīng)處要加一個(gè)“零”;如果非0的阿拉伯?dāng)?shù)字之后所有數(shù)字都為0,則大寫金額中這個(gè)數(shù)字后面不加“零”,如10100,轉(zhuǎn)換為“壹萬(wàn)零壹佰元”。

        2.2 算法分析

        要將一個(gè)阿拉伯?dāng)?shù)字轉(zhuǎn)換為大寫金額,如100202001023.35。可以按如下步驟實(shí)現(xiàn)。

        第一步:把該數(shù)字分成整數(shù)部分和小數(shù)部分,整數(shù)部分是100202001023,小數(shù)部分是35。

        第二步:分別將小數(shù)部分和整數(shù)部分進(jìn)行轉(zhuǎn)換,小數(shù)部分取出角位的數(shù)字和分位的數(shù)字分別轉(zhuǎn)換,本例中角位轉(zhuǎn)換為“叁角”,分位轉(zhuǎn)換為“伍分”。整數(shù)部分也取出各位對(duì)應(yīng)的值分別轉(zhuǎn)換成對(duì)應(yīng)的字符串,本例中從千億位到個(gè)位分別轉(zhuǎn)換為“壹仟”“零”“零”“貳億”“零”“貳佰”“零”“萬(wàn)”“壹仟”“零”“貳拾”“叁元”。

        第三步:把前面的轉(zhuǎn)換結(jié)果合并成一個(gè)字符串,即“壹仟零零貳億零貳佰零萬(wàn)壹仟零貳拾叁元叁角伍分”。

        第四步:消除合并后所得字符串中多余的字符,如連續(xù)的多個(gè)“零”,只保留一個(gè)“零”,把字符串中的“零億”“零萬(wàn)”“零元”等分別替換成“億”“萬(wàn)”“元”,刪除字符串最前面的“億”“元”“零”以及字符串最后面的“零”。本例處理完成后結(jié)果,即“壹仟零貳億零貳佰萬(wàn)壹仟零貳拾叁元叁角伍分”。

        第五步:判斷是否在字符串的最后面加上“正”字,整個(gè)轉(zhuǎn)換過(guò)程即完成。

        綜上,大寫金額轉(zhuǎn)換算法可以用如圖1所示的N-S流程圖表示。

        圖1 大寫金額轉(zhuǎn)換算法N-S流程圖

        3 算法實(shí)現(xiàn)[1-2]

        3.1 類的定義

        定義類ArabToChinese實(shí)現(xiàn)用阿拉伯?dāng)?shù)字書寫的金額到大寫金額的轉(zhuǎn)換,類的成員數(shù)據(jù)和成員方法如下:

        3.2 類的實(shí)現(xiàn)

        3.2.1 構(gòu)造函數(shù)的實(shí)現(xiàn)

        構(gòu)造函數(shù)ArabToChinese的功能是將待轉(zhuǎn)換的金額s轉(zhuǎn)換為double類型,并取出各位對(duì)應(yīng)的數(shù)字賦值給相應(yīng)的成員數(shù)據(jù),實(shí)現(xiàn)代碼如下:

        3.2.2 方法DtoC的實(shí)現(xiàn)

        方法DtoC的功能是將非零的數(shù)字轉(zhuǎn)換成對(duì)應(yīng)的漢字,對(duì)應(yīng)的代碼如下:

        3.2.3 將各位數(shù)字轉(zhuǎn)換成對(duì)應(yīng)字符串

        分別定義方法將各位數(shù)字轉(zhuǎn)換為對(duì)應(yīng)的字符串,因篇幅所限,且這些方法的實(shí)現(xiàn)代碼類似,這里以方法FentoS、JiaotoS、GeweitoS的實(shí)現(xiàn)為例進(jìn)行介紹,這三個(gè)方法對(duì)應(yīng)的代碼如下:

        3.2.4 GetResult方法的實(shí)現(xiàn)

        GetResult方法的功能是合并各部分的轉(zhuǎn)換結(jié)果,并刪除多余的字符,得到最終的轉(zhuǎn)換結(jié)果,實(shí)現(xiàn)該方法的代碼如下:

        3.3 應(yīng)用舉例

        下面通過(guò)實(shí)例說(shuō)明轉(zhuǎn)換方法的使用。如要把101012000100.00轉(zhuǎn)換為大寫金額,則以字符串“101012000100.00”為參數(shù)創(chuàng)建對(duì)象,然后通過(guò)對(duì)象調(diào)用成員方法GetResult獲得轉(zhuǎn)換結(jié)果。在C#控制臺(tái)應(yīng)用程序中的實(shí)現(xiàn)代碼如下:

        程序的輸出結(jié)果是“壹仟零壹拾億壹仟貳佰萬(wàn)零壹佰元正”。

        4.結(jié)語(yǔ)

        本文運(yùn)用面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,把要轉(zhuǎn)換的金額和轉(zhuǎn)換算法封裝為一個(gè)整體,并用C#實(shí)現(xiàn)了該算法。文中定義的類ArabToChinese能實(shí)現(xiàn)整數(shù)部分12位(即千億位)和小數(shù)部分2位的數(shù)字大寫金額轉(zhuǎn)換,能滿足大多數(shù)情況下金額轉(zhuǎn)換的需求。文中基于類實(shí)現(xiàn)的金額轉(zhuǎn)換方法具有良好的可擴(kuò)充性,若需要轉(zhuǎn)換更大范圍的金額,可以從類ArabToChinese派生出新的類,并在新的類中增加相應(yīng)的成員數(shù)據(jù)及相應(yīng)位的轉(zhuǎn)換方法即可實(shí)現(xiàn)。

        猜你喜歡
        字符串阿拉伯?dāng)?shù)字大寫
        做一個(gè)大寫的“我”
        大寫的厲害:“00后”少年自制火箭成功上天
        小讀者(2021年4期)2021-06-11 05:42:04
        阿拉伯?dāng)?shù)字的用法
        “大寫”與“大些”
        找影子
        阿拉伯?dāng)?shù)字是阿拉伯人發(fā)明的嗎
        —個(gè)大寫的pink 該入手的都來(lái)了
        Coco薇(2016年2期)2016-03-22 02:31:03
        一種新的基于對(duì)稱性的字符串相似性處理算法
        印度人發(fā)明的阿拉伯?dāng)?shù)字
        依據(jù)字符串匹配的中文分詞模型研究
        女人和拘做受全程看视频| 日本女u久久精品视频| 一区二区视频在线观看地址| 色偷偷亚洲第一成人综合网址| 99久久精品国产成人综合| 69av视频在线| 中文字幕久久精品一区二区| 日本污ww视频网站| 欧美最猛黑人xxxx黑人表情| 日本a在线播放| 一区二区激情偷拍老牛视频av| 老太婆性杂交视频| 真人直播 免费视频| 欧美成人精品福利在线视频 | 久久中文字幕av一区二区不卡 | 欧美亚洲国产另类在线观看| 美女被插到高潮嗷嗷叫| 人妻精品视频一区二区三区| 99久久精品日本一区二区免费 | 亚洲成在人网站av天堂| 国产精品理人伦国色天香一区二区| 国产精品不卡在线视频| av免费播放网站在线| 手机看片福利一区二区三区| 亚洲制服无码一区二区三区| 亚洲二区精品婷婷久久精品| 国产一区二区三区日韩精品| 亚洲熟女综合一区二区三区| 国产一级淫片a免费播放口| 国产乱淫h侵犯在线观看| 蜜臀av无码人妻精品| 欧美日韩精品乱国产538| 亚洲av中文字字幕乱码| 久久综合99re88久久爱| 丰满少妇被猛男猛烈进入久久| 久国产精品久久精品国产四虎 | 免费无码中文字幕A级毛片| 免费国产不卡在线观看| 久久精品国产亚洲av麻豆图片| 国产AV无码专区亚洲AⅤ| 亚洲国产精品成人一区|