人名幣金額阿拉伯數字轉化為中國傳統形式JAVA實現

2021-07-05 02:26:10 字數 1231 閱讀 3212

在金融專案中,常常需要對金額

進行轉換,阿拉伯數字轉換成中國傳統形式。人民幣保留到分。

如輸入:16700 返回:壹萬陸仟柒佰元

如輸入:167.5785 返回:

壹佰陸拾柒元伍角捌分 (

可能用到的漢字

參考:零,壹

,貳,叄

,肆,伍

,陸,柒

,捌,玖

,拾,佰

,仟,萬

,億,兆,元,角

,分.)

分析:

在考慮分數的時候,首先要實現對小數的四捨五入,可以取到要保留小數的下一位數字,判斷其是舍還是入。

接下來就是考慮,將數字擴到全是整數,從人名幣的最小單位分開始,迴圈從最低位到高位。最後就是考慮去除掉字串裡面的一些沒有意義的翻譯,比如100會翻譯成,壹佰零拾零元,其中的』零拾『和『零元』。這裡用replaceall裡面可以使用正則匹配。當然這裡還應該有輸入引數的合法驗證,這裡略。

**實現:

public static string convert(double inputmonney) ; 

//漢語中貨幣單位大寫,這樣的設計類似於佔位符

char units = ;

int uint = 0;

//在這裡我不使用系統函式,自己實現四捨五入,原理:如102.345,保留2位並四捨五入,102.3456->102.3456*10^(2+1)=102345.6->去掉小數部分102345->102345%10=5取到保留小數字數的下一位數字,判斷捨入

long money = (long)(inputmonney * math.pow(10, decimaldigit + 1));

if (money % 10 > 4) else

stringbuffer sbf = new stringbuffer();

while (money != 0)

//使用replaceall替換掉「零+'人民幣單位'」,replaceall裡面的old字串可以是正規表示式

return sbf.tostring().replaceall("零[仟佰拾]", "零").replaceall("零+萬", "萬").replaceall("零+億", "億").replaceall("億萬", "億零").replaceall("零+", "零").replaceall("零元", "元").replaceall("零[角分]", "");

}

阿拉伯數字轉化為中文大寫

var alabo function num let tmpnewchar 最後結果 let numstr number num tostring split 0 數字轉化字串 if test numstr let bignum 億 萬 千 百 十 定義單位陣列 let bignumslice 定義...

阿拉伯數字轉化為羅馬數字

include include include define rows 4 define cols 4 int nums rows cols char roms rows cols 二維的陣列指標 void judge int num 判斷輸入的數字是否在制定範圍內 void trans int n...

將漢語數字轉化為阿拉伯數字

1,例如 輸入 二百五十 輸出 250 輸入 一百三十八 輸出 138 1 python實現具體資訊如下 class solution object def chinesetoint self,strs if strs return none dicts strs strs.replace 零 li...