漢字數字與阿拉伯數字的轉換

2021-07-15 05:18:01 字數 1503 閱讀 8867

網上看了許多說法,感覺這個事情本身不複雜,不過也沒許多人嘴炮說得那麼簡單。想法誰都有,都覺得自己能實現,不過許多人「信誓旦旦」地把這個寫了之後,發現會報各種各樣的錯誤。在此我把**寫上,附上我的想法。

這種最簡單,1——一,2——二,以此類推。記住不要忘了0——零

十——10,百——100,千——1000,記住沒有萬,因為萬和億很特殊,前後的級數都是數字計數法

這些項出現的時候,前面累計求和的所有數字都要乘以該項。比如「三百三十七萬」

萬——10000

這一項的設計是防止億和萬同時出現的時候,被乘了兩次。

許多人自以為是的倒著讀入,實際上是為問題新增了許多難度。

我傾向於正著讀入,比如「一千三百四十八」這個數,讀了1,再讀數量級項「千」,就把剛剛讀入的數乘以1000,然後加到總和裡歸零。

【注意】在正著讀入的時候,要判斷某一項後面沒有「乘積項」【或者到達了數字末尾】,如果有,說明讀到了個位,這時候不應繼續讀下去了,而是應直接加上該個位數。不要再等著乘以數量級項了。

**如下:

vocabulary = 

quantity_dict =

stamp_dict =

defliter_to_number_under_yi

(a):

ifnot a:

return

0 sum = 0

value = 0

for num in range(len(a)):

if a[num] in vocabulary:

print

value = vocabulary[a[num]]

if num+1 >= len(a) or a[num+1] in stamp_dict:

sum += value

value = 0

elif a[num] in quantity_dict:

value = value * quantity_dict[a[num]]

sum += value

value = 0

elif a[num] in stamp_dict:

sum *= stamp_dict[a[num]]

#最後加乙個判斷,sum_all和sum哪個大。【漢字轉數字,技巧:從左往右轉,判斷下一位是不是萬,億等。在萬億的時候,要記得清空】

return sum

deflitertonum

(a):

a_list = a.split(u"億")

print a_list[0]

print a_list[1]

return liter_to_number_under_yi(a_list[0])*100000000+liter_to_number_under_yi(a_list[1])

a = u"一千二百五十一萬零一億一千二百五十八萬零一百三十四"

litertonum(a)

**從「億」這個地方分隔,分隔後兩邊分別跑這個子函式。然後得到結果

阿拉伯數字轉漢字數字 C

using system using system.collections.generic using system.text public class numtocharactor private string unit new string public numtocharactor publi...

將漢字數字轉換成阿拉伯數字

前一段時間看乙個帖子上在討論這個演算法,跟帖的有一百多人。發的演算法也不下十個。不過我覺的這個是做好的乙個,總結如下。如有問題往大家校正!number 用來對映 一,二,三.unit用來對映十,百,千.struct number struct unit 下面是具體演算法部分,思路非常 簡單就是從右至...

阿拉伯數字轉成漢字

做乙個中醫專案時後台返回是阿拉伯數字,專案需求是需要轉化為中文數字,記錄一下轉化方法,感覺要比那種switch.case.拓展性好一點。因為當時不會超過一千,所以就寫到了百位,其他需求可以自行更改一下。當然預設傳的是整數型別的。public class numbertochineseutil str...