在金融專案中,常常需要對金額
進行轉換,阿拉伯數字轉換成中國傳統形式。人民幣保留到分。
如輸入: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...