Python金額大寫轉換

2021-09-23 22:06:38 字數 1823 閱讀 6578

# 判斷是否包含小數點,還有判斷是否只包含小數點和數字的這邊沒寫出來

def is_contain_dot(check_str):

check_str = str(check_str)

for ch in check_str:

if ch == '.':

return true

return false

def digital_to_upper(moneystr):

nums =

decimal_label = ['角', '分']

small_int_label =

decimal_part = ''

integer_part_list =

integer_part = ''

# 包含小數點,則分成整數部分和小數部分

if is_contain_dot(moneystr) is true:

integer, decimal = str(moneystr).split('.', 1)

if len(decimal)>2:

# print('小數部分超出')

return ('小數部分超出範圍')

elif len(integer)>9:

return ('還沒見過這麼多錢')

# 處理小數部分,只處理到百分位

for i, j in enumerate(decimal):

"""i: 記錄迴圈次數

"""if j == '0' and decimal[-1] != '0':

decimal_part += nums[int(j)]

elif j == '0' and decimal[-1] == '0':

pass

else:

decimal_part += (nums[int(j)] + decimal_label[i])

# 不包含小數點,則為整數部分

else:

integer = str(moneystr)

if len(integer)>9:

return ('還沒見過這麼多錢')

"""處理整數部分,到億;這邊的處理辦法是從低位往高位讀,遇到0,判斷前一位是否為0,前一位為0的情況則不讀,如果前一位不為0,則讀0。

"""if integer != '' and int(integer) != 0:

integer_part_list.insert(0, '元')

for n, m in enumerate(integer[::-1]):

if n == 0 and m == '0':

pass

else:

# 當前為0 同時在萬位,並且輸入不為0時插入「萬」

if m=='0' and n==4 and int(integer) != 0:

integer_part_list.insert(0, '萬')

elif m=='0' and integer[::-1][n-1] != '0':

integer_part_list.insert(0, (nums[int(m)]))

elif m == '0' and integer[::-1][n-1] == '0':

pass

else:

integer_part_list.insert(0, (nums[int(m)] + small_int_label[n]))

integer_part = ''.join(integer_part_list)

return (integer_part+decimal_part)

完整版:

金額大寫轉換

use toy go object storedprocedure dbo l2u script date 03 19 2014 13 15 27 set ansi nulls on goset quoted identifier on goalter procedure dbo l2u n low...

python數字金額轉換為中文大寫金額

python數字金額轉換為中文大寫金額 編寫一函式,將數字金額轉換為中文大寫金額。設最高位考慮到億,最低位考慮到分 如 數字金額為1023.445,轉換為中文大寫金額為 壹仟零佰貳拾叄元肆角伍分 輸入 乙個數字金額 如 1234.5 輸出 中文大寫金額 壹仟貳佰叄拾肆元伍角零分 from decim...

oracle 金額大寫轉換

function convert money input number number return varchar2 is i pls integer snum varchar2 20 ltrim replace to char abs input number 9999999999999990.9...