本節實現在實際開發中常用的乙個工具函式:將乙個浮點數轉換**民幣讀法的字串,這個程式需要使用陣列。
實現這個函式的思路是,首先把這個浮點數分成整數部分和小數部分。提取整數部分很容易,直接將這個浮點數強制型別轉換成乙個整數即可,這個整數就是浮點數的整數部分;再使用浮點數減去整數就可以得到這個浮點數的小數部分。
然後分開處理整數部分和小數部分。小數部分的處理比較簡單,直接截斷保留 2 位數字,轉換成幾角幾分的字串。整數部分的處理則稍微複雜一點,但只要認真分析不難發現,中國的數字習慣是 4 位一節的,乙個 4 位的數字可被轉成幾千幾百幾十幾,至於後面新增什麼單位則不確定:
多於 12 位就暫不考慮了。
因此,實現這個程式的關鍵就是把乙個 4 位的數字字串轉換成中文讀法。下面程式把這個需求實現了一部分:
''' 把乙個浮點數分解成整數部分和小數部分字串 num 需要被分解的浮點數 返回分解出來的整數部分和小數部分。 第乙個陣列元素是整數部分,第二個陣列元素是小數部分 ''' def divide(num): # 將乙個浮點數強制型別轉換為int型,即得到它的整數部分 integer = int(num) # 浮點數減去整數部分,得到小數部分,小數部分乘以100後再取整得到2位小數 fraction = round((num - integer) * 100) # 下面把整數轉換為字串 return (str(integer), str(fraction)) han_list = ["零" , "壹" , "貳" , "叄" , "肆" , "伍" , "陸" , "柒" , "捌" , "玖"] unit_list = ["十" , "百" , "千"] ''' 把乙個四位的數字字串變成漢字字串 num_str 需要被轉換的四位的數字字串 返回四位的數字字串被轉換成漢字字串 ''' def four_to_hanstr(num_str): result = "" num_len = len(num_str) # 依次遍歷數字字串的每一位數字 for i in range(num_len) : # 把字串轉成數值 num = int(num_str[i]) # 如果不是最後一位數字,而且數字不是零,則需要新增單位(千、百、十) if i != num_len - 1 and num != 0 : result += han_list[num] + unit_list[num_len - 2 - i] # 否則不要新增單位 else : result += han_list[num] return result ''' 把數字字串變成漢字字串 num_str 需要被轉換的數字字串 返回數字字串被轉換成漢字字串 ''' def integer_to_str(num_str): str_len = len(num_str) if str_len > 12 : print('數字太大,翻譯不了') return # 如果大於8位,包含單位億 elif str_len > 8: return four_to_hanstr(num_str[:-8]) + "億" + four_to_hanstr(num_str[-8: -4]) + "萬" + four_to_hanstr(num_str[-4:]) # 如果大於4位,包含單位萬 elif str_len > 4: return four_to_hanstr(num_str[:-4]) + "萬" + four_to_hanstr(num_str[-4:]) else: return four_to_hanstr(num_str) num = float(input("請輸入乙個浮點數: ")) # 測試把乙個浮點數分解成整數部分和小數部分 integer, fraction = divide(num) # 測試把乙個四位的數字字串變成漢字字串 print(integer_to_str(integer)) print(fraction)執行上面程式,將看到如下執行結果:
請輸入乙個浮點數: 361092004.456
叄億陸千壹百零玖萬貳千零零肆
46從上面程式的執行結果來看,初步實現了所需功能,但這個程式並不是這麼簡單的,對零的處理比較複雜。例如,有兩個零連在一起時該如何處理呢?還有小數部分如何翻譯?因此,這個程式還需要繼續完善,有興趣的讀者可自行完善此程式。
python 數字轉人民幣讀法
把乙個浮點數分解成整數和小數部分字串 num是需要被分解的浮點數 返回分解出來的整數和小數部分 第乙個陣列元素是整數部分,第二個數字元素是小數部分 def divide num 將乙個浮點數強制轉換成int型別,即得到他的整數部分 integer int num 浮點數減去整數部分,得到小數部分,小...
數字轉人民幣
數字轉換人民幣大寫形式 銀行 單位和個人填寫的各種票據和結算憑證需要將數字金額寫 民幣大寫形式,它的規則主要有以下幾條 1 數字和單位使用壹 貳 叄 肆 伍 陸 柒 捌 玖 拾 佰 仟 萬 億 元 角 分 零 整等字樣,不能使用其他漢字 2 中文大寫金額數字到 元 為止的,在 元 之後 應寫 整 字...
瘋狂Python講義Unit4 數字轉人民幣讀法
usr bin python3 num transfer to rmb 借鑑了講義中4位的數字字串轉換成中文的函式 優化了小數部分和0的處理,仍舊不夠完善 分離整數和小數部分 def divide num inttemp int num fractiontemp round num inttemp ...